setup について
JavaScript/TypeScript、Python、Go、Rust のプロジェクト向けにツールを設定するスキルです。既存の構成を検出し、足りないツールを補いながら、意図的に選ばれた代替ツールは維持します。
主な機能
- 01言語とパッケージマネージャーの検出
- 02既存ツール設定の確認
- 03言語別ツールの設定
- 04シークレットスキャンの追加
- 05導入済み・スキップ項目の報告
活用シーン
- 01リポジトリの開発ツールの整備
- 02不足する静的解析・フォーマッターの追加
- 03コミット前フックへのシークレットスキャン導入
- 04既存のツール設定の維持
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ tartinerlabs/ skills --skill setupインストール後、Claude Code で/setupを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/go.mdpython.mdrust.mdrules/biome.mdcommitlint.mdhusky.mdlint-staged.mdsecret-scanner.mdsemantic-release.mdtypescript.md詳細
あなたはツールのセットアップアシスタントです。プロジェクトの言語を検出し、そのエコシステムで未設定の項目を自動検出してすべてインストールします。
0. 言語を検出して振り分ける
マニフェストからプロジェクトの言語を検出し、該当するセットアップガイドに従います。
| 言語 | 検出対象 | セットアップガイド |
|---|---|---|
| JS/TS | package.json | 以下の rules/*.md ファイル(Biome · Husky · commitlint · lint-staged · GitLeaks · TypeScript) |
| Python | pyproject.toml、requirements*.txt、setup.py、setup.cfg | references/python.md(Ruff · mypy · pre-commit · GitLeaks) |
| Go | go.mod | references/go.md(gofmt · golangci-lint · pre-commit · GitLeaks) |
| Rust | Cargo.toml | references/rust.md(rustfmt · Clippy · pre-commit · GitLeaks) |
検出した言語のガイドのみを読み込みます。Ruby など、一覧にない言語の場合は、同様の構成に従って標準的なフォーマッター/リンターをセットアップし、プロジェクトのシークレットスキャナーを pre-commit フックに組み込みます。ただし、その言語はまだ正式サポートに含まれていないことを明記します。シークレットスキャナー(デフォルトは GitLeaks。TruffleHog も可)は、言語を問わずすべてのエコシステムでセットアップします。
このファイルの残りの部分(ステップ 1~5)は、JS/TS 向けの手順です。Python、Go、Rust の場合は、参照先のガイドに従ってから、すべてのエコシステムに適用されるステップ 5(サプライチェーンの強化)に進みます。
1. パッケージマネージャーを検出する
ロックファイルから、次の順番でパッケージマネージャーを検出します。nub.lock、pnpm-lock.yaml、bun.lock/bun.lockb、yarn.lock、package-lock.json。ロックファイルがない場合は、質問してください。
package.json の devEngines.packageManager または packageManager フィールドは、どのロックファイルよりも優先されます。pnpm の場合は、packageManager より devEngines.packageManager を優先してください。pnpm 11 以降と pnpm/setup アクションはまずこのフィールドを読み取り、pnpm は解決済みのバージョンを pnpm-lock.yaml に記録します。すべてのマシンと CI の実行で同じ pnpm を使うため、範囲指定ではなく正確なバージョンを固定します。セットアップ時に最新バージョンを確認し(pnpm view pnpm version)、{ "name": "pnpm", "version": "<latest>", "onFail": "download" } として記述します。ランタイムも同様です。.nvmrc や engines.node ではなく、セットアップ時に解決した最新の LTS を devEngines.runtime で宣言します(pnpm 10.14 以降はダウンロードし、チェックサムをロックファイルに記録します)。pnpm runtime set node lts(pnpm 11.4 以降)でフィールドを記述できます。保存された version が範囲ではなく正確なバージョンであることを確認してください。pnpm を宣言する際は、このフィールドも記述します。従来の "packageManager": "pnpm@…" の移行も有益ですが、必須ではありません。宣言は両方ではなく、どちらか一方にします。2 つのフィールドが一致しないプロジェクトでは、バージョン切り替えツールが動作しません。Yarn では、読み取るフィールドが packageManager だけなので、引き続きこちらが必要です。Nub は別のマネージャーのロックファイル上で互換モードで動作するため、nub.lock と pnpm-lock.yaml が併存する場合は nub を使用します。ロックファイルだけで判断する前に、フィールドを確認してください。
ルールファイルでは 2 つのプレースホルダーを使います。<pm> は検出したマネージャーに、<pmx> はそのマネージャーの一時的なパッケージ実行ツールに置き換えます。
| 検出された PM | <pm> | <pmx> |
|---|---|---|
| nub | nub | nubx |
| pnpm | pnpm | pnx |
| bun | bun | bunx |
| npm | npm | npx |
| yarn(v2 以降) | yarn | yarn dlx |
| yarn(v1) | yarn | npx |
Yarn のバージョンを検出します。.yarnrc.yml がある場合は v2 以降、.yarnrc のみ、またはいずれもない場合は v1 です。
別のマネージャーの実行ツールを、他のマネージャーを使うプロジェクトに絶対に記述しないでください。bun プロジェクトの Git フックに pnx を記述すると、コミット時に失敗し、プロジェクトで実際に使っているマネージャーが適用するストアの整合性チェックやレジストリ設定も回避してしまいます。
2. 既存のツール構成を確認する
何かをインストールする前に、既存の設定を確認します。
biome.json/biome.jsonc→ Biome はすでに設定済みです.husky/ディレクトリ → Husky はすでに設定済みですrules/commitlint.mdに記載された commitlint 設定 → commitlint はすでに設定済みです.lintstagedrc*/package.jsonのlint-stagedキー → lint-staged はすでに設定済みです.husky/pre-commitのgitleaksまたはtrufflehog→ シークレットスキャナーはすでに設定済みですtsconfig.json→ TypeScript はすでに設定済みです.eslintrc*/eslint.config.*→ ESLint が存在します(Biome への移行を提案します).prettierrc*/prettier.config.*→ Prettier が存在します(Biome への移行を提案します)
すでに設定されているツールはスキップしてください。 スキップした項目を最後に報告します。
3. ツールをインストールする
詳しいセットアップ手順と設定ファイルについては、各ルールファイルを確認してください。
このスタックは、意図的に特定の方針に基づいています。 ツールの選択は主観的なものです。Biome と ESLint/Prettier、Conventional Commits とコミット規約なし、Husky と別のフックマネージャーは、いずれも妥当な選択肢です。各ルールファイルでは、
### Why This Mattersにその選択理由を記載し、### Alternativesに一般的な代替案を示しています。原則は2つです。どのツールも導入しない選択ができ、意図的に設定された代替ツールは置き換えず、そのまま維持します。ステップ2で検出を行うのは、正常に動作している構成を上書きせず、このスキルで実際に不足している部分だけを補うためです。すべてのプロジェクトで推奨するのは、シークレットスキャンだけです(デフォルトは GitLeaks、TruffleHog も使用できます)。切り替え可能なのはスキャナーのみであり、スキャンを実施するかどうかは切り替えられません。
自動インストール(不足している場合は必ずセットアップ)
| ツール | 用途 | ルール |
|---|---|---|
| Biome | リント+フォーマット | rules/biome.md |
| Husky | Git フック | rules/husky.md |
| commitlint | Conventional Commits | rules/commitlint.md |
| lint-staged | コミット前のリント | rules/lint-staged.md |
| シークレットスキャナー | シークレットの検出 | rules/secret-scanner.md |
| TypeScript | 型チェック | rules/typescript.md |
オプトイン(明示的に要求された場合のみ)
| ツール | 用途 | ルール |
|---|---|---|
| semantic-release | バージョン管理の自動化 | rules/semantic-release.md |
4. 結果の概要
すべてのツールをインストールした後、概要を表示します。
## Setup Complete
### Installed
- [list of tools installed]
### Skipped (already configured)
- [list of tools skipped with reason]
### Next Steps
- Run `<pm> run check` to verify Biome is working
- Make a test commit to verify git hooks
5. サプライチェーンの強化
ツールのセットアップが完了したら、このスキルのディレクトリからの相対パス skills/deps/SKILL.md を確認し、deps スキルが利用可能かどうかを調べます。存在する場合は /deps を実行し、エコシステムの依存関係サプライチェーンを強化します(言語も検出します)。存在しない場合は、このステップを何も表示せずにスキップします。
プロジェクトで Git が初期化されており、システムにシークレットスキャナーがインストールされている必要があります(brew install gitleaks または同等の方法)。すべてのエコシステムで、スキャナーはコミット前フックに組み込まれています。