make

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

GNU Make / Makefile リファレンス

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 とは別の対象であることに注意する。
这是一个涵盖 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
等),相关页面和示例会明确标注最低版本。请注意,本 Skill 的目标不同于 Make 自动化 SaaS、CMake 和 cargo-make。

ディレクトリ構成

目录结构

text
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
text
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 の公式仕様が要求するものではない。
references/
中的每个页面都明确区分以下三类:
  • 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 官方规范的要求。

探索手順

查阅流程

  1. 参照だけでよい場合(consult、既定の使い方)は、下記マッピング表でタスクに対応するカテゴリを探し、そのカテゴリの
    README.md
    で目的のページを特定して Read する。外部プログラムは実行しない
  2. 既存構成の診断・計画・検証が必要な場合は「利用パターン」の表で consult 以外のどの段階かを確認し、対応する
    scripts/*.md
    の手順に従う
  3. 安全上の制約は必ず references/operations/safety-and-portability.md で確認する
  1. 只需参考时(consult,默认用法),在下方映射表中找到任务对应的类别,再通过该类别的
    README.md
    确定目标页面并 Read。不要运行外部程序
  2. 需要诊断、规划和验证现有结构时,在“使用模式”表中确认 consult 之外应处于哪个阶段,并按照相应的
    scripts/*.md
    流程操作
  3. 务必通过 references/operations/safety-and-portability.md 检查安全约束

タスク → カテゴリ マッピング

任务 → 类别映射

タスクカテゴリ参照 README
Make と Cargo/xtask/Turborepo/CI の責務分離、コマンド契約、Make 採用可否・移行の判断基準を知りたいarchitecturereferences/architecture/README.md
target / prerequisite / recipe、order-only prerequisite、変数展開(
=
:=
?=
+=
)、自動変数、Make と shell の
$
の区別を調べる
fundamentalsreferences/fundamentals/README.md
pattern rule、include、条件分岐、レシピと shell(tab /
.RECIPEPREFIX
/
.ONESHELL
)を調べる
fundamentalsreferences/fundamentals/README.md
.PHONY
・
.DEFAULT_GOAL
等の特殊ターゲット、
-j
並列・再帰 make、
-n
/
-q
診断、GNU/POSIX/BSD 互換性を調べる
executionreferences/execution/README.md
単一 crate / workspace / virtual workspace の profile、fmt/clippy/test/doc の使い分け、cargo xtask の採否を調べるrustreferences/rust/README.md
pnpm workspace、package.json scripts、Turborepo への委譲、Rust+Node 混在の責務境界を調べるnodereferences/node/README.md
Git hooks と CI の共通コマンド契約、パイプライン定義とマージ保護の違い、キャッシュ・外部状態の境界を調べるqualityreferences/quality/README.md
consult/audit/plan/apply/verify の安全境界、再実行可能な setup、並列 worktree 分離、clean の対象範囲を調べるoperationsreferences/operations/README.md
出典台帳、GNU Make のよくある失敗パターンと診断手順を調べるmaintenancereferences/maintenance/README.md
動くサンプル(増分ビルド、Rust crate/workspace、Node、混在、CI テンプレート、適用計画)を見たいsamplessamples/README.md
Claude が使う調査・計画検証・プレビュー・検証スクリプトの実行方法を知りたいscriptsscripts/README.md
補助スクリプトの回帰テスト・終了コード契約・eval-cases を知りたいteststests/README.md
任务类别参考 README
希望了解 Make 与 Cargo/xtask/Turborepo/CI 的职责划分、命令契约,以及是否采用 Make 和迁移的判断标准architecturereferences/architecture/README.md
查找 target / prerequisite / recipe、order-only prerequisite、变量展开(
=
:=
?=
+=
)、自动变量,以及 Make 与 shell 中
$
的区别
fundamentalsreferences/fundamentals/README.md
查找 pattern rule、include、条件分支,以及 recipe 与 shell(tab /
.RECIPEPREFIX
/
.ONESHELL
)
fundamentalsreferences/fundamentals/README.md
查找
.PHONY
、
.DEFAULT_GOAL
等特殊 target、
-j
并行与递归 make、
-n
/
-q
诊断,以及 GNU/POSIX/BSD 兼容性
executionreferences/execution/README.md
查找单个 crate / workspace / virtual workspace 的 profile、fmt/clippy/test/doc 的使用分工,以及是否采用 cargo xtaskrustreferences/rust/README.md
查找 pnpm workspace、package.json scripts、向 Turborepo 委派,以及 Rust+Node 混合项目中的职责边界nodereferences/node/README.md
查找 Git hooks 与 CI 的共享命令契约、pipeline 定义与合并保护的区别,以及缓存和外部状态的边界qualityreferences/quality/README.md
查找 consult/audit/plan/apply/verify 的安全边界、可重复执行的 setup、并行 worktree 隔离,以及 clean 的作用范围operationsreferences/operations/README.md
查找来源清单、GNU Make 的常见失败模式与诊断流程maintenancereferences/maintenance/README.md
查看可运行示例(增量构建、Rust crate/workspace、Node、混合项目、CI 模板和应用计划)samplessamples/README.md
了解如何运行 Claude 使用的调查、计划验证、预览和验证脚本scriptsscripts/README.md
了解辅助脚本的回归测试、退出代码契约和 eval-casesteststests/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。
--execute
は利用者が確認した計画の
--approve <planDigest>
と各 check の
approved:true
が揃う場合のみ)
仅阅读参考资料不会修改目标文件,也不会自动运行外部程序。加载 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 を参照。
  • 在可疑仓库中,不要将
    make -n
    /
    make -q
    用作安全的静态分析手段,因为加载配置时可能会执行代码
  • 不要显示、记录到日志或混入 JSON 中
    .env
    等机密信息的值
  • 不要自动安装工具、使用 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 設置先に置き換える。
bash
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 を必要とするわけではない。
scripts/bin/*.mjs
使用相对于 Skill 安装位置的路径进行解析。安装方式(上游
skills/make/
、
.agents/skills/make/
、
.claude/skills/make/
中的实体文件或 symlink、全局安装)不同,Skill 自身的绝对路径也会发生变化,因此执行时应将
<skill-dir>
替换为当时实际的 Skill 安装位置。
bash
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 の責務分離が適切か静的に診断して」
  • “参考 make,为这个 Rust crate 制定 Makefile 和验证命令的改进计划”
  • “根据 GNU Make 规范评审这个仓库的 Makefile,并告诉我是否遗漏了
    .PHONY
    ”
  • “静态诊断这个 Rust + Node 混合仓库中 Make、Cargo、Turborepo 和 CI 的职责划分是否合理”

関連スキルとの使い分け

与相关 Skill 的分工

  • 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 が同じコマンド契約を共有する設計指針のみを扱う
いずれもスキル名による探索を前提とし、単独インストール時に壊れる兄弟ディレクトリへの相対リンクは使わない。
  • rust — 负责 Cargo、rustc、rustdoc 等整个 Rust 语言工具链的 API 参考。
    make
    的
    references/rust/
    仅处理在 Make 语境下如何划分 Cargo 标准功能与 xtask 模式,不会重复介绍 Rust 语言规范
  • turborepo — 负责 Turborepo 自身的任务图、缓存和 pipeline 定义。
    make
    的
    references/node/
    仅处理向 Turborepo 委派的边界
  • lefthook — 负责 Git hooks 的配置和实现。
    make
    的
    references/quality/
    仅提供 hooks 与 CI 共享同一命令契约的设计指导
这些 Skill 均以按 Skill 名称搜索为前提,不使用会在单独安装时失效的兄弟目录相对链接。