対話なしで自動実行するには --dangerously-skip-permissions が必要です。
このフラグはコンテナ環境以外では危険なため、podman/Docker での実行を前提としています。
セキュリティ設計: ホストへのアクセスは認証情報ディレクトリのみ。
作業はコンテナ内で完結し、成果物は最後に明示的にコピーします。
Containerfile
```Dockerfile
FROM mcr.microsoft.com/dotnet/sdk:10.0
RUN apt-get update && apt-get install -y git curl ca-certificates sudo && rm -rf /var/lib/apt/lists/*
# 非rootユーザーを作成(--dangerously-skip-permissions はroot不可のため)
RUN useradd -m -s /bin/bash developer && \
echo "developer ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
# claude CLI インストール(npm経由、グローバル)
RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - && \
apt-get install -y nodejs && \
npm install -g @anthropic-ai/claude-code
# 以降は developer ユーザーで実行
USER developer
WORKDIR /home/developer
# uv インストール
RUN curl -LsSf https://astral.sh/uv/install.sh | sh
ENV PATH="/home/developer/.local/bin:$PATH"
# specify-cli インストール
RUN /home/developer/.local/bin/uv tool install specify-cli --from git+https://github.com/github/spec-kit.git
WORKDIR /workspace
```
ビルド
```bash
podman build -t spec-kit-env .
```
Step 1: コンテナを起動
認証情報ディレクトリをマウントし、作業ディレクトリはマウントしません。
Linux / macOS (bash):
```bash
# Max プラン(事前にホスト側で claude login を実行しておく)
podman run -it --name spec-kit-work \
-v "${HOME}/.claude":/home/developer/.claude \
spec-kit-env bash
# API キープラン
podman run -it --name spec-kit-work \
-e ANTHROPIC_API_KEY="${ANTHROPIC_API_KEY}" \
spec-kit-env bash
```
Windows (PowerShell):
```powershell
# Max プラン(事前にホスト側で claude login を実行しておく)
podman run -it --name spec-kit-work `
-v "$env:USERPROFILE/.claude:/home/developer/.claude" `
spec-kit-env bash
# API キープラン
podman run -it --name spec-kit-work `
-e ANTHROPIC_API_KEY="$env:ANTHROPIC_API_KEY" `
spec-kit-env bash
```
Step 2: コンテナ内で実行
```bash
# 初期化
specify init . --ai claude
# カタログを追加
git clone https://github.com/akiramei/blazor-enterprise-architecture-poc /tmp/temp-catalog
cp -r /tmp/temp-catalog/catalog ./catalog
cp -r /tmp/temp-catalog/docs ./docs
mkdir -p .claude/commands .claude/skills memory
cp /tmp/temp-catalog/catalog/speckit-extensions/commands/*.md .claude/commands/
cp -r /tmp/temp-catalog/catalog/skills/* .claude/skills/
cat /tmp/temp-catalog/catalog/speckit-extensions/constitution-additions.md >> memory/constitution.md
rm -rf /tmp/temp-catalog
# 自動実行(1セッションで全工程を実行)
# ※ 以下はサンプル仕様書を使用した例です。
# 実際には自分の要求仕様ファイルを指定してください。
claude --dangerously-skip-permissions -p "
/speckit.specify $(cat docs/samples/library-loan-system-requirements.md)
/speckit.specify が完了したら、同じセッションの中で次を順番に実行してください:
- /speckit.plan
- /speckit.tasks
- /speckit.implement
途中で質問せず、自動で最後まで実行してください。
実装はドメイン層だけで止めず、Application 層と UI 層(Blazor)まで完了させてください。
"
# 完了後、コンテナを終了
exit
```
Step 3: 成果物をホストにコピー
```bash
# 成果物をホストにコピー
podman cp spec-kit-work:/workspace/src ./src
# 必要に応じて他のファイルもコピー
podman cp spec-kit-work:/workspace/specs ./specs
podman cp spec-kit-work:/workspace/manifests ./manifests
# コンテナを削除
podman rm spec-kit-work
```
> セキュリティメリット:
> - ホストへの書き込みアクセスは認証情報ディレクトリのみ
> - 作業ディレクトリはコンテナ内で完結
> - 必要な成果物だけを明示的にコピー
>
> 注意: --continue で複数セッションに分割すると、AIの内部コンテキストが
> リセットされ、ドメイン層だけで実装が止まることがあります。
> 上記のように1回のコマンドで全工程を指示してください。
>
> エラー時のリカバリ: 途中でエラーになった場合は、生成されたファイルを削除して最初からやり直すのが確実です:
> ```bash
> rm -rf src/ specs/ manifests/ memory/project-*.md
> # 再度 claude コマンドを実行
> ```
---