360 Secure SkillHub
360 安全技能中心

make

提供 GNU Make/Makefile 规范参考、设计审查、可运行样本与诊断脚本,覆盖规则与变量、并行/递归、Rust 与 Node 混用、CI/hooks 边界;支持只读咨询、计划预览、布局校验及经批准的命令执行。

Fandhe-AI
热度 0.00
最近更新 2026-10-18 15:39:07
分类:开发依赖:代码执行 / 读写文件应用场景:代码审查 / 调试排错 / 自动化脚本 / DevOps ...

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add fandhe-ai/agent-reference-skills/make
Metadata
name
make
description
GNU Make / Makefile リファレンス。 ターゲット、prerequisite、order-only、変数展開、自動変数、pattern rule、.PHONY、-j 並列・再帰 make、増分ビルド。 Rust / Cargo / xtask、Node.js / pnpm / Turborepo、Git hooks / CI との責務分離と開発コマンド共通化。 Makefile 設計・レビュー、Bash サンプル、診断スクリプト。
user-invocable
false

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 の公式仕様が要求するものではない。

探索手順

  1. 参照だけでよい場合(consult、既定の使い方)は、下記マッピング表でタスクに対応するカテゴリを探し、そのカテゴリの README.md で目的のページを特定して Read する。外部プログラムは実行しない
  2. 既存構成の診断・計画・検証が必要な場合は「利用パターン」の表で consult 以外のどの段階かを確認し、対応する scripts/*.md の手順に従う
  3. 安全上の制約は必ず 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、条件分岐、レシピと 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。--execute は利用者が確認した計画の --approve <planDigest> と各 check の approved:true が揃う場合のみ)

安全上の最小ルール

  • 不審なリポジトリで 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 が同じコマンド契約を共有する設計指針のみを扱う

いずれもスキル名による探索を前提とし、単独インストール時に壊れる兄弟ディレクトリへの相対リンクは使わない。