ワンステップ導入
2つのスクリプトは同じことをします:キットを ~/.claude(全プロジェクト共通)または現在のプロジェクトの .claude/ に書き込みます。既存のファイルは一切上書きせず、キット版は .kit-new として保存するので、比較と統合は自分で行います。
方法1:コマンド1行で入れる(軽量キット)
Mac / Linux
ターミナルcurl -fsSL https://workflow.maysuns.uk/ja/kit/install.sh -o install.sh && bash install.sh --dry-run
# 何をするか確認したら、--dry-run を外してもう一度実行:
bash install.sh # ~/.claude に入れる
bash install.sh --project # 現在のプロジェクトに入れるWindows PowerShell
PowerShellInvoke-WebRequest https://workflow.maysuns.uk/ja/kit/install.ps1 -OutFile install.ps1
.\install.ps1 -DryRun # まず予行演習
.\install.ps1 # $HOME\.claude に入れる
.\install.ps1 -Project # 現在のプロジェクトに入れる「スクリプトの実行が無効です」と出たとき:
powershell -ExecutionPolicy Bypass -File .\install.ps1。最初に --dry-run / -DryRun で確認することを強くお勧めします。スクリプトの画面表示は日本語ですが、コンソールの文字コードによっては文字化けする場合があります(動作には影響しません)。方法2:zip をダウンロードして手でコピーする
軽量キットの zip をダウンロード 展開したら、.claude フォルダの中身を自分の ~/.claude かプロジェクトの .claude にコピーします。
スクリプトがすること/しないこと
| すること | しないこと |
|---|---|
zip をダウンロード(このサイトのこの1つのアドレスだけ)。一時フォルダに展開。存在しないファイルをコピー。既存のファイルは .kit-new として保存。参考用の settings.kit-example.json を作成 | 既存のファイルの上書き。あなたの settings.json の変更。ファイルの削除。データのアップロード。zip の中のコードの実行 |
スクリプトの全内容(実行する前に自分で読んでください)
install.sh
install.sh ダウンロード#!/usr/bin/env bash
# スターター・ワークフローキット インストールスクリプト(Mac / Linux / Windows Git Bash)
# 使い方:
# bash install.sh # ユーザー用の ~/.claude(全プロジェクト共通)に入れる。軽量キットをダウンロード
# bash install.sh --project # 現在のディレクトリ(./CLAUDE.md と ./.claude/)に入れる
# bash install.sh --zip kit.zip # ローカルの zip を使う(完全版は先にブラウザでログインして zip をダウンロード)
# bash install.sh --dry-run # 何をするかだけ表示し、ファイルは書かない
# bash install.sh --target /tmp/x # インストール先を指定(先に一時フォルダで試すとき)
# ルール:既存のファイルは一切上書きしない。キット版は <ファイル名>.kit-new として保存し、比較と統合は自分で行う。
# settings.json は決して書かない。参考用の settings.kit-example.json だけを作る。
set -euo pipefail
URL="https://workflow.maysuns.uk/ja/kit/workflow-starter-lite.zip"
MODE="user"; ZIP=""; DRY=0; TARGET=""
while [ $# -gt 0 ]; do
case "$1" in
--project) MODE="project" ;;
--user) MODE="user" ;;
--zip) ZIP="${2:?--zip にはパスが必要です}"; shift ;;
--dry-run) DRY=1 ;;
--target) TARGET="${2:?--target にはパスが必要です}"; shift ;;
-h|--help) sed -n '2,10p' "$0"; exit 0 ;;
*) echo "不明なオプション:$1"; exit 1 ;;
esac
shift
done
TMP="$(mktemp -d)"; trap 'rm -rf "$TMP"' EXIT
if [ -z "$ZIP" ]; then
echo "キットをダウンロード中:$URL"
curl -fsSL "$URL" -o "$TMP/kit.zip"
ZIP="$TMP/kit.zip"
fi
command -v unzip >/dev/null || { echo "unzip コマンドが必要です"; exit 1; }
unzip -q "$ZIP" -d "$TMP/x"
ROOT="$(find "$TMP/x" -mindepth 1 -maxdepth 1 -type d | head -n1)"
[ -n "$ROOT" ] || { echo "zip にキットのフォルダがありません"; exit 1; }
if [ -n "$TARGET" ]; then MODE="target"; DEST="$TARGET"; CLAUDE_DIR="$TARGET"
elif [ "$MODE" = "project" ]; then DEST="$PWD"; CLAUDE_DIR="$DEST/.claude"; else DEST="$HOME/.claude"; CLAUDE_DIR="$DEST"; fi
DRYTXT=""; [ "$DRY" = 1 ] && DRYTXT="(ドライラン)"
echo "モード:$MODE インストール先:$DEST$DRYTXT"
new=0; skipped=0
put() { # put 元ファイル 先ファイル
local src="$1" dst="$2"
if [ -e "$dst" ]; then
echo " スキップ(既存)$dst → キット版は $dst.kit-new として保存$DRYTXT"
[ "$DRY" = 1 ] || cp "$src" "$dst.kit-new"
skipped=$((skipped+1))
else
echo " 新規作成 $dst$DRYTXT"
if [ "$DRY" != 1 ]; then mkdir -p "$(dirname "$dst")"; cp "$src" "$dst"; fi
new=$((new+1))
fi
}
# 1) .claude 配下の rules / commands / skills
while IFS= read -r f; do
rel="${f#"$ROOT/.claude/"}"
case "$rel" in
settings.example.json) put "$f" "$CLAUDE_DIR/settings.kit-example.json" ;; # settings.json には絶対に触れない
*) put "$f" "$CLAUDE_DIR/$rel" ;;
esac
done < <(find "$ROOT/.claude" -type f | sort)
# 2) CLAUDE.md:プロジェクトモードではプロジェクトのルートへ。ユーザーモードではひな形としてだけ置き、グローバルの CLAUDE.md は使わない
if [ -f "$ROOT/CLAUDE.md" ]; then
if [ "$MODE" = "project" ]; then put "$ROOT/CLAUDE.md" "$DEST/CLAUDE.md"; else put "$ROOT/CLAUDE.md" "$DEST/CLAUDE.kit-template.md"; fi
fi
echo "完了:新規作成 $new 件、スキップ $skipped 件(既存。キット版は .kit-new として保存)。"
echo "次へ:Claude Code を開いて /status を試し、CLAUDE.md のひな形の【】の部分を自分の内容に書き換えてください。"
install.ps1
install.ps1 ダウンロード# スターター・ワークフローキット インストールスクリプト(Windows PowerShell 5.1 / PowerShell 7)
# 使い方:
# .\install.ps1 # ユーザー用の $HOME\.claude に入れる。軽量キットをダウンロード
# .\install.ps1 -Project # 現在のディレクトリ(.\CLAUDE.md と .\.claude\)に入れる
# .\install.ps1 -ZipPath kit.zip # ローカルの zip を使う(完全版は先にブラウザでログインして zip をダウンロード)
# .\install.ps1 -DryRun # 何をするかだけ表示し、ファイルは書かない
# ルール:既存のファイルは一切上書きしない。キット版は <ファイル名>.kit-new として保存し、比較と統合は自分で行う。
# settings.json は決して書かない。参考用の settings.kit-example.json だけを作る。
# .\install.ps1 -Target D:\x\.claude # インストール先を指定(先に一時フォルダで試すとき)
param([switch]$Project, [string]$ZipPath = "", [switch]$DryRun, [string]$Target = "")
$ErrorActionPreference = "Stop"
$Url = "https://workflow.maysuns.uk/ja/kit/workflow-starter-lite.zip"
$Tmp = Join-Path ([System.IO.Path]::GetTempPath()) ("kit_" + [guid]::NewGuid().ToString("N"))
New-Item -ItemType Directory -Path $Tmp | Out-Null
try {
if (-not $ZipPath) {
Write-Host "キットをダウンロード中:$Url"
$ZipPath = Join-Path $Tmp "kit.zip"
Invoke-WebRequest -Uri $Url -OutFile $ZipPath -UseBasicParsing
}
Expand-Archive -Path $ZipPath -DestinationPath (Join-Path $Tmp "x") -Force
$Root = Get-ChildItem (Join-Path $Tmp "x") -Directory | Select-Object -First 1
if (-not $Root) { throw "zip にキットのフォルダがありません" }
$RootPath = $Root.FullName
if ($Target) { $Dest = $Target; $ClaudeDir = $Target; $Mode = "target" }
elseif ($Project) { $Dest = (Get-Location).Path; $ClaudeDir = Join-Path $Dest ".claude"; $Mode = "project" }
else { $Dest = Join-Path $HOME ".claude"; $ClaudeDir = $Dest; $Mode = "user" }
$suffix = ""; if ($DryRun) { $suffix = "(ドライラン。ファイルは書きません)" }
Write-Host "モード:$Mode インストール先:$Dest $suffix"
$script:new = 0; $script:skipped = 0
function Put([string]$src, [string]$dst) {
if (Test-Path -LiteralPath $dst) {
Write-Host " スキップ(既存)$dst → キット版は $dst.kit-new として保存"
if (-not $DryRun) { Copy-Item -LiteralPath $src -Destination "$dst.kit-new" -Force }
$script:skipped++
} else {
Write-Host " 新規作成 $dst"
if (-not $DryRun) {
New-Item -ItemType Directory -Path (Split-Path $dst) -Force | Out-Null
Copy-Item -LiteralPath $src -Destination $dst
}
$script:new++
}
}
$dotClaude = Join-Path $RootPath ".claude"
Get-ChildItem -LiteralPath $dotClaude -Recurse -File | Sort-Object FullName | ForEach-Object {
$rel = $_.FullName.Substring($dotClaude.Length).TrimStart('\','/')
if ($rel -eq "settings.example.json") { Put $_.FullName (Join-Path $ClaudeDir "settings.kit-example.json") } # settings.json には絶対に触れない
else { Put $_.FullName (Join-Path $ClaudeDir $rel) }
}
$cm = Join-Path $RootPath "CLAUDE.md"
if (Test-Path -LiteralPath $cm) {
if ($Project -and -not $Target) { Put $cm (Join-Path $Dest "CLAUDE.md") } else { Put $cm (Join-Path $Dest "CLAUDE.kit-template.md") }
}
Write-Host "完了:新規作成 $($script:new) 件、スキップ $($script:skipped) 件(既存。キット版は .kit-new として保存)。"
Write-Host "次へ:Claude Code を開いて /status を試し、CLAUDE.md のひな形の【】の部分を自分の内容に書き換えてください。"
} finally {
Remove-Item -LiteralPath $Tmp -Recurse -Force -ErrorAction SilentlyContinue
}
入れたあとの確認
- ユーザー用:
ls ~/.claude/commands(Windows:dir $HOME\.claude\commands)で status.md などが見えるはずです。 - Claude Code を開いて
/と入力すると、一覧にstatus、estimate、session-endが出ます。 /statusと入力して、正常に出力されるか確認します。