mcpField
G
GitLab Stack Creator

GitLab Stack Creator

github.com/rknallクラウド・DevOps86282 回インストール53 週間前に更新
リポジトリ

GitLab Stack Creator について

GitLab Stack Creatorは、Dockerスタックの作成を支援するスキルです。ディレクトリ構成、Git設定、検証スクリプト、ドキュメントを整え、完了前の設定とシークレットの確認を重視します。

主な機能

  1. 01スタック要件の聞き取り
  2. 02標準的なプロジェクト構成
  3. 03Git設定とフック
  4. 04Docker設定とシークレットの検証
  5. 05セットアップおよびサービス文書

活用シーン

  1. 01新しいDockerスタックの開始
  2. 02Gitリポジトリと検証フックの初期化
  3. 03完了前のスタック設定確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/rknall/claude-skills --skill gitlab-stack-creator

インストール後、Claude Code で/gitlab-stack-creatorを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

workflow-examples.md
git-hooks-guide.md
SKILL_COMPLETION.md
README.md
templates-reference.md

詳細

GitLab スタック作成ツール

適切な構成、Git 設定、検証スクリプト、包括的なドキュメントを備えた新しい GitLab スタックプロジェクトの作成を支援します。

このスキルを使用するタイミング

次の場合にこのスキルを起動してください。

  • 新しい GitLab スタックプロジェクトを作成するとき
  • 適切な構成で Docker スタックを初期化するとき
  • ./config、./secrets、./_temporary ディレクトリを備えたプロジェクトをセットアップするとき
  • スタックプロジェクト用の Git リポジトリを設定するとき
  • 検証フックとスクリプトをセットアップするとき
  • ベストプラクティスに従ってスタックプロジェクトを立ち上げるとき

基本原則

このスキルは、GitLab Stack Management のパターンに従います。

  1. すべて docker-compose.yml と ./config を通じて設定します
  2. シークレットは ./secrets と Docker secrets に保存します
  3. docker-entrypoint.sh スクリプトは、コンテナがネイティブのシークレットに対応していない場合にのみ使用します
  4. すべてのコンテナファイルは、docker を実行するユーザーが所有します(root 所有のファイルは作成しません)
  5. 一時的なセットアップファイルには ./_temporary ディレクトリを使用します(使用後にクリーンアップします)
  6. スタックの作成完了とみなす前に、すべてを検証します

スタック作成の完了条件

スタック作成は、次の条件をすべて満たした場合にのみ完了とみなされます。

  1. ✅ stack-validator スキルで問題がないと報告されている
  2. ✅ secrets-manager スキルで未解決の問題がない
  3. ✅ docker-validation スキルで問題がない
  4. ✅ すべての検証スクリプトが正常に実行される
  5. ✅ Git リポジトリが適切に初期化され、設定されている
  6. ✅ ./docs にドキュメントが揃っている

重要:回避策は絶対に使用しないでください。直接的な方法でうまくいかない場合は、作業を中止して、代わりにどうすべきかユーザーに確認してください。

スタック作成のワークフロー

フェーズ 1:プロジェクトの初期化
1.1 要件の確認

ユーザーに次の内容を確認してください。

  • プロジェクト名
  • 必要な主なサービス(nginx、PostgreSQL、Redis など)
  • リモート Git リポジトリの URL(ある場合)
  • 環境(development、staging、production)
  • 特別な要件

決して推測しないでください。情報が不足している場合は、必ず確認してください。

1.2 既存のセットアップを確認

作成を始める前に、次の内容を確認してください。

  • ディレクトリがすでに存在するか
  • Git リポジトリが存在するか
  • 競合がある場合、どのように進めるかユーザーに確認する
  • 明示的な許可なしに上書きしない
フェーズ 2:ディレクトリ構成の作成

標準のディレクトリ構成を作成します。

project-name/
├── .git/                       # Git repository
│   ├── hooks/                  # Git hooks (validation scripts)
│   └── config                  # Git configuration
├── config/                     # Service configurations
│   ├── nginx/                  # Nginx configs (if needed)
│   ├── postgres/               # PostgreSQL configs (if needed)
│   └── redis/                  # Redis configs (if needed)
├── secrets/                    # Docker secrets files
│   └── .gitkeep               # Keep directory in git
├── _temporary/                 # Temporary files (gitignored)
├── scripts/                    # Validation and utility scripts
│   ├── pre-commit              # Pre-commit validation hook
│   ├── validate-stack.sh       # Full stack validation
│   └── setup-hooks.sh          # Hook installation script
├── docs/                       # Project documentation
│   ├── decisions/              # Architecture decision records
│   ├── setup.md                # Setup instructions
│   └── services.md             # Service documentation
├── docker-compose.yml          # Main compose file
├── .env.example                # Environment template
├── .gitignore                  # Git exclusions
├── .dockerignore               # Docker exclusions
├── CLAUDE.md                   # Claude Code instructions
└── README.md                   # Project overview

作業内容:

  1. ディレクトリを作成します:mkdir -p config secrets _temporary scripts docs/decisions
  2. プレースホルダーファイルを作成します:touch secrets/.gitkeep
  3. 適切な権限を設定します:chmod 700 secrets
フェーズ 3:Git リポジトリのセットアップ
3.1 リポジトリを初期化または接続

Git リポジトリが存在しない場合:

  • ローカルリポジトリの作成を強く推奨します
  • リモートリポジトリを追加するかユーザーに確認します
  • git init で初期化します
  • git config init.defaultBranch main で main をデフォルトブランチに設定します

リモートリポジトリの URL が指定されている場合:

  • リポジトリをクローンします:git clone <url> <project-name>
  • またはリモートを追加します:git remote add origin <url>
  • リモート接続を確認します:git remote -v

セットアップに失敗した場合:作業を中止して、ユーザーに指示を求めてください。回避策は絶対に試みないでください。

3.2 Git の設定

必須の Git 設定を行います。

# Set main as branch name
git config init.defaultBranch main

# Set ff-only merge strategy
git config pull.ff only
git config merge.ff only

# Ensure no rebase by default
git config pull.rebase false

# Set user info if not set globally
git config user.name "User Name"
git config user.email "[email protected]"

設定に失敗した場合:ユーザーに設定を手動で行うよう依頼するか、正しい値を提示してもらってください。

3.3 .gitignore を作成

包括的な .gitignore を生成します。

# Secrets - NEVER commit
secrets/*
!secrets/.gitkeep
*.key
*.pem
*.crt
*.p12
*.pfx

# Environment files
.env
.env.local
.env.*.local

# Temporary files
_temporary/
*.tmp
*.temp
.cache/

# Docker
.docker/

# IDE
.vscode/
.idea/
*.swp
*.swo
*~

# OS
.DS_Store
Thumbs.db
*.log

# Backup files
*.bak
*.backup
3.4 .dockerignore を作成

.dockerignore を生成します。

.git
.gitignore
README.md
docs/
_temporary/
*.md
.env
.env.example
secrets/
.vscode/
.idea/
フェーズ 4:検証スクリプトのセットアップ
4.1 scripts/validate-stack.sh を作成

次の処理を行う包括的な検証スクリプトを生成します。

  • stack-validator スキルを呼び出す
  • secrets-manager スキルの検証を呼び出す
  • docker-validation スキルを呼び出す
  • すべての問題を報告する
  • すべての検証に合格した場合にのみ、終了コード 0 を返す

テンプレート:

#!/usr/bin/env bash
set -euo pipefail

echo "=== GitLab Stack Validation ==="
echo

# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

ERRORS=0

echo "1. Validating stack structure..."
if ! claude-code-cli run stack-validator; then
    echo -e "${RED}✗ Stack validation failed${NC}"
    ((ERRORS++))
else
    echo -e "${GREEN}✓ Stack validation passed${NC}"
fi
echo

echo "2. Validating secrets configuration..."
if ! claude-code-cli run secrets-manager --validate; then
    echo -e "${RED}✗ Secrets validation failed${NC}"
    ((ERRORS++))
else
    echo -e "${GREEN}✓ Secrets validation passed${NC}"
fi
echo

echo "3. Validating Docker configuration..."
if ! claude-code-cli run docker-validation; then
    echo -e "${RED}✗ Docker validation failed${NC}"
    ((ERRORS++))
else
    echo -e "${GREEN}✓ Docker validation passed${NC}"
fi
echo

if [ $ERRORS -gt 0 ]; then
    echo -e "${RED}Validation failed with $ERRORS error(s)${NC}"
    exit 1
fi

echo -e "${GREEN}All validations passed!${NC}"
exit 0

実行可能にします:chmod +x scripts/validate-stack.sh

4.2 scripts/pre-commit を作成

pre-commit フックを生成します。

#!/usr/bin/env bash
set -euo pipefail

echo "Running pre-commit validation..."

# Check for secrets in staged files
if git diff --cached --name-only | grep -qE "secrets/.*[^.gitkeep]|\.env$"; then
    echo "ERROR: Attempting to commit secrets or .env file!"
    echo "Secrets should never be committed to git."
    exit 1
fi

# Check for root-owned files
if find . -user root -not -path "./.git/*" 2>/dev/null | grep -q .; then
    echo "ERROR: Root-owned files detected!"
    echo "All files should be owned by the user running Docker."
    exit 1
fi

# Run quick validation (if available)
if [ -x "./scripts/validate-stack.sh" ]; then
    echo "Running stack validation..."
    if ! ./scripts/validate-stack.sh; then
        echo "ERROR: Stack validation failed!"
        echo "Fix issues before committing, or use 'git commit --no-verify' to skip."
        exit 1
    fi
fi

echo "Pre-commit validation passed!"
exit 0

実行可能にします:chmod +x scripts/pre-commit

4.3 scripts/setup-hooks.sh を作成する

フックのインストールスクリプトを生成します:

#!/usr/bin/env bash
set -euo pipefail

echo "Installing git hooks..."

# Check if .git directory exists
if [ ! -d ".git" ]; then
    echo "ERROR: Not a git repository!"
    exit 1
fi

# Install pre-commit hook
if [ -f "scripts/pre-commit" ]; then
    cp scripts/pre-commit .git/hooks/pre-commit
    chmod +x .git/hooks/pre-commit
    echo "✓ Installed pre-commit hook"
else
    echo "✗ scripts/pre-commit not found"
    exit 1
fi

echo "Git hooks installed successfully!"

実行可能にします:chmod +x scripts/setup-hooks.sh

スクリプトの作成後:./scripts/setup-hooks.sh を実行してフックをインストールします。

フェーズ 5:Docker の設定
5.1 docker-compose.yml のテンプレートを作成する

ユーザーの要件に基づいて、初期の docker-compose.yml を生成します。

重要:docker-validation スキルを使用して、docker-compose.yml がすべてのベストプラクティスに従っていることを確認してください。

基本的なテンプレート構成:

services:
  # Services will be added based on requirements

  # Example: nginx service
  nginx:
    image: nginx:alpine
    container_name: ${PROJECT_NAME:-project}_nginx
    restart: unless-stopped
    ports:
      - "${NGINX_PORT:-80}:80"
    volumes:
      - ./config/nginx:/etc/nginx/conf.d:ro
    networks:
      - app-network

networks:
  app-network:
    driver: bridge

# Secrets will be defined here when needed
secrets: {}

# Volumes for persistent data
volumes: {}

実行内容:

  1. 選択したサービスを含む docker-compose.yml を生成する
  2. docker-validation スキルを使用して検証する
  3. 報告された問題を修正する
  4. 検証に失敗した場合は、絶対に先へ進まず、ユーザーに対応を確認する
5.2 .env.example を作成する

環境変数テンプレートを生成します:

# Project Configuration
PROJECT_NAME=myproject

# Service Ports
NGINX_PORT=80
# Add more as needed

# Database Configuration (if applicable)
# POSTGRES_PORT=5432
# REDIS_PORT=6379

# IMPORTANT: Copy this file to .env and configure for your environment
# .env is gitignored and should contain actual secrets
フェーズ 6:設定ファイル

config-generator スキルを使用して、サービス固有の設定ファイルを作成します。

実行内容:

  1. 各サービス(nginx、PostgreSQL、Redis)について、config-generator を呼び出す
  2. ./config// に設定ファイルを生成する
  3. config-generator の検証機能を使って、生成された設定ファイルを検証する
  4. 無効な設定ファイルがある場合は、絶対に先へ進まず、ユーザーに対応を確認する

呼び出し例:

  • 「このスタック用に nginx の本番環境設定を生成する」
  • 「PostgreSQL の開発環境設定を作成する」
  • 「永続化機能付きの Redis 設定を生成する」
フェーズ 7:シークレット管理

secrets-manager スキルを使用して、シークレットを設定します。

実行内容:

  1. シークレットが必要なサービスを特定する
  2. secrets-manager を使用して、安全なシークレットを作成する
  3. シークレット参照を使って docker-compose.yml を設定する
  4. コンテナがネイティブの Docker シークレットに対応していない場合に限り、docker-entrypoint.sh スクリプトを生成する
  5. .env または docker-compose.yml の環境変数にシークレットが含まれていないことを、secrets-manager で検証する
  6. secrets-manager が問題を報告した場合は、絶対に先へ進まず、ユーザーに対応を確認する

呼び出し例:

  • 「PostgreSQL 用のデータベースパスワードシークレットを設定する」
  • 「Redis のパスワードシークレットを作成する」
  • 「JWT_SECRET 用の安全なランダムシークレットを生成する」
フェーズ 8:ドキュメントの生成
8.1 docs/setup.md を作成する

セットアップドキュメントを生成します:

# Setup Instructions

## Prerequisites

- Docker Engine 20.10+
- Docker Compose V2
- Git

## Initial Setup

1. Clone the repository:
   ```bash
   git clone <repository-url>
   cd <project-name>
  1. 環境変数テンプレートをコピーします:

    cp .env.example .env
    
  2. 環境を設定します:

    • 設定に合わせて .env を編集する
    • .env を git に絶対にコミットしない
  3. シークレットを設定します:

    • シークレットの作成方法については secrets/README.md に従う
    • 各シークレットに対して docker secret create を使用する
  4. git フックをインストールします:

    ./scripts/setup-hooks.sh
    
  5. スタックを検証します:

    ./scripts/validate-stack.sh
    
  6. サービスを起動します:

    docker compose up -d
    

検証

デプロイ前に必ず検証を実行してください:

./scripts/validate-stack.sh

以下を確認します:

  • スタックの構造
  • シークレットの設定
  • Docker の設定
  • ファイルの所有権
  • Git の除外設定

#### 8.2 Create docs/services.md

Document all services:
```markdown
# Services Documentation

## Service Overview

| Service | Port | Purpose | Configuration |
|---------|------|---------|---------------|
| nginx | 80 | Web server | ./config/nginx |
| ... | ... | ... | ... |

## Service Details

### Nginx

**Image**: nginx:alpine
**Purpose**: Web server and reverse proxy
**Configuration**: ./config/nginx/
**Secrets**: None
**Volumes**:
- ./config/nginx:/etc/nginx/conf.d:ro

### [Other Services]

Document each service similarly...
8.3 docs/decisions/0001-stack-architecture.md を作成する

アーキテクチャ決定記録を作成します:

# 1. Stack Architecture

**Date**: YYYY-MM-DD

## Status

Accepted

## Context

This project uses GitLab Stack Management patterns to ensure:
- Consistent configuration management
- Secure secrets handling
- Proper file ownership
- Validated deployments

## Decision

We will follow these principles:
1. All configuration in docker-compose.yml and ./config
2. All secrets in ./secrets and Docker secrets
3. docker-entrypoint.sh only when necessary
4. No root-owned files
5. ./_temporary for transient files
6. Complete validation before deployment

## Consequences

**Positive**:
- Consistent structure across all stacks
- Automated validation prevents issues
- Secure by default
- Easy to maintain and update

**Negative**:
- Initial setup requires more steps
- Must follow strict patterns
- Validation gates can slow rapid iteration

## Compliance

- stack-validator: Ensures structure compliance
- secrets-manager: Ensures secure secrets
- docker-validation: Ensures Docker best practices
8.4 CLAUDE.md を作成する

プロジェクト用の Claude Code 指示を生成します:

# CLAUDE.md

This file provides guidance to Claude Code when working with this stack project.

## Project Structure

This is a GitLab Stack project following strict patterns:
- Configuration: docker-compose.yml and ./config/
- Secrets: ./secrets/ and Docker secrets
- Temporary: ./_temporary/ (gitignored)
- Documentation: ./docs/
- Validation: ./scripts/

## Required Skills

This project uses these Claude Code skills:
- **stack-validator**: Validate entire stack structure
- **secrets-manager**: Manage Docker secrets securely
- **docker-validation**: Validate Docker configurations
- **config-generator**: Generate service configs

## Git Configuration

**Branch**: main
**Merge Strategy**: ff-only (fast-forward only)
**Hooks**: Pre-commit validation enabled

## Validation Requirements

BEFORE any git commit, ALL these must pass:
1. stack-validator reports NO issues
2. secrets-manager is satisfied
3. docker-validation is satisfied
4. No root-owned files exist
5. No secrets in .env or docker-compose.yml environment

## Making Changes

### Adding a Service

1. Update docker-compose.yml
2. Use config-generator to create configs
3. Use secrets-manager to handle secrets
4. Run ./scripts/validate-stack.sh
5. Fix ALL issues before committing
6. NEVER commit if validation fails

### Modifying Configuration

1. Edit configuration files
2. Validate with docker-validation
3. Run ./scripts/validate-stack.sh
4. Fix ALL issues before committing

### Working with Secrets

1. Use secrets-manager for ALL secret operations
2. NEVER put secrets in .env or docker-compose.yml
3. Use Docker secrets or ./secrets/ directory
4. Validate with secrets-manager before committing

## Commit Standards

**Pre-commit Hook**: Automatically validates before commit
**Skip Hook**: `git commit --no-verify` (emergency only)
**Commit Messages**: Use conventional commits format

Example:

feat: add Redis service with persistence fix: correct nginx proxy configuration docs: update setup instructions


## Important Rules

1. NEVER commit secrets to git
2. NEVER create root-owned files
3. NEVER skip validation without asking
4. NEVER use workarounds - ask user instead
5. ALWAYS run validation before committing
6. ALWAYS document decisions in ./docs/decisions/
7. ALWAYS use ff-only merge strategy
8. ALWAYS use main as branch name

## Troubleshooting

### Validation Fails

1. Review validation output
2. Use respective skill to investigate (stack-validator, secrets-manager, docker-validation)
3. Fix reported issues
4. Re-run validation
5. Ask user if stuck - NEVER use workarounds

### Git Conflicts

1. NEVER use rebase without explicit permission
2. Use ff-only merges
3. Ask user how to resolve conflicts

### Permission Issues

1. Check file ownership: `find . -user root`
2. Fix with: `sudo chown -R $USER:$USER .`
3. Validate with stack-validator

## Resources

- Stack Validator Documentation
- Secrets Manager Documentation
- Docker Validation Documentation
- Config Generator Documentation
8.5 README.md を作成する

プロジェクトの README を生成します:

# Project Name

Brief description of the project.

## Quick Start

```bash
# Clone repository
git clone <url>
cd <project-name>

# Copy environment template
cp .env.example .env

# Configure environment (edit .env)
nano .env

# Install git hooks
./scripts/setup-hooks.sh

# Validate stack
./scripts/validate-stack.sh

# Start services
docker compose up -d

ドキュメント

プロジェクト構成

.
├── config/          # Service configurations
├── secrets/         # Docker secrets (gitignored except .gitkeep)
├── _temporary/      # Temporary files (gitignored)
├── scripts/         # Validation and utility scripts
├── docs/            # Project documentation
└── docker-compose.yml

検証

このプロジェクトでは、自動検証を使用します。

# Full validation
./scripts/validate-stack.sh

# Pre-commit validation (automatic)
git commit -m "message"

検証項目:

  • ✓ スタックの構造(stack-validator)
  • ✓ シークレットの設定(secrets-manager)
  • ✓ Docker の設定(docker-validation)
  • ✓ ファイルの所有権(root 所有のファイルがないこと)
  • ✓ Git の除外設定(.gitignore)

Git ワークフロー

ブランチ:main
マージ戦略:ff-only(ファストフォワードのみ)
プリコミットフック:有効(コミット前に検証)

サービス

サービスポート用途
.........

詳細については、サービスのドキュメントを参照してください。

開発

前提条件
  • Docker Engine 20.10+
  • Docker Compose V2
  • Git
  • Bash(スクリプト用)
サービスの追加
  1. docker-compose.yml を更新します
  2. 設定を生成します:config-generator スキルを使用します
  3. シークレットを設定します:secrets-manager スキルを使用します
  4. 検証します:./scripts/validate-stack.sh
  5. 変更をコミットします
変更の実施
  1. 変更を加えます
  2. 検証を実行します:./scripts/validate-stack.sh
  3. 報告された問題を修正します
  4. コミットします(pre-commit フックによって再度検証されます)

トラブルシューティング

検証に失敗する場合

個別のバリデーターを実行します:

  • claude-code-cli run stack-validator
  • claude-code-cli run secrets-manager --validate
  • claude-code-cli run docker-validation
権限に関する問題

root 所有のファイルがないか確認します:

find . -user root -not -path "./.git/*"

所有者を修正します:

sudo chown -R $USER:$USER .

ライセンス

[Your License]

お問い合わせ

[Your Contact Info]


### Phase 9: Final Validation

#### 9.1 Run Complete Validation

Execute full validation workflow:

```bash
# Run validation script
./scripts/validate-stack.sh

次の項目を確認する必要があります:

  1. stack-validator:構造全体の検証
  2. secrets-manager:すべてのシークレットが適切に設定されていること
  3. docker-validation:Docker 設定が有効であること
  4. ファイルの所有者:root 所有のファイルがないこと
  5. Git の設定:適切な .gitignore があり、フックがインストールされていること
9.2 検証チェックリスト

手動で確認します:

  • すべてのディレクトリが作成されている
  • Git リポジトリが初期化されている
  • Git が設定されている(main ブランチ、ff-only)
  • .gitignore と .dockerignore が作成されている
  • 検証スクリプトが作成され、実行可能になっている
  • Git フックがインストールされている
  • docker-compose.yml が作成され、有効である
  • .env.example が作成されている
  • サービス設定が生成されている(該当する場合)
  • シークレットが適切に設定されている(該当する場合)
  • すべてのドキュメントが作成されている
  • CLAUDE.md が作成されている
  • README.md が作成されている
  • stack-validator:✓ 問題なし
  • secrets-manager:✓ 問題なし
  • docker-validation:✓ 問題なし
9.3 スタック作成の完了

次の条件を満たした場合にのみ、スタック作成を完了としてマークします:

  • すべての検証がエラーなしで成功している
  • すべてのドキュメントが完成している
  • Git リポジトリが適切に設定されている
  • ユーザーがすべて正しいことを確認している

いずれかの検証に失敗した場合:

  1. 問題を明確に報告します
  2. どのように進めるかユーザーに尋ねます
  3. 回避策は絶対に使用しません
  4. 問題を適切に修正します
  5. 再検証します
フェーズ 10:初回コミット

すべての検証に合格したら:

# Stage all files
git add .

# Commit (pre-commit hook will validate)
git commit -m "feat: initial stack setup

- Created directory structure
- Configured git with main branch and ff-only
- Set up validation scripts and hooks
- Generated docker-compose.yml
- Created service configurations
- Set up secrets management
- Added comprehensive documentation"

# Push to remote (if configured)
git push -u origin main

pre-commit フックが原因でコミットに失敗した場合:

  1. 検証結果を確認します
  2. 問題を修正します
  3. 検証を再実行します
  4. 再度コミットを試みます
  5. 問題が解決しない場合はユーザーに尋ねます

コミュニケーションのスタイル

スタックを作成する際:

  • 不足している情報について確認の質問をします
  • 実行前に各フェーズについて説明します
  • 検証結果を明確に報告します
  • 検証に失敗した場合は絶対に先へ進みません
  • 行き詰まった場合はユーザーに指示を求めます
  • 実行前に重要な決定を確認します
  • すべての決定を ./docs/decisions/ に記録します
  • 次の手順を明確に示します

他のスキルとの連携

stack-validator
  • フェーズ 9(最終検証)の最後に呼び出します
  • 検証スクリプト内で呼び出します
  • pre-commit フック内で呼び出します
  • 検証に失敗した場合は絶対に先へ進みません
secrets-manager
  • フェーズ 7(シークレット管理)で呼び出します
  • すべてのシークレット操作に使用します
  • シークレット設定を検証します
  • secrets-manager が問題を報告した場合は絶対に先へ進みません
docker-validation
  • フェーズ 5(Docker 設定)で呼び出します
  • docker-compose.yml を検証します
  • Dockerfile を検証します(存在する場合)
  • 検証スクリプト内で呼び出します
  • docker-validation に失敗した場合は絶対に先へ進みません
config-generator
  • フェーズ 6(設定ファイル)で呼び出します
  • サービス固有の設定を生成します
  • nginx、PostgreSQL、Redis などに使用します
  • 生成された設定を検証します

エラー処理

検証の失敗

してはいけないこと:

  • 回避策を試す
  • 検証を省略する
  • エラーがある状態で先へ進む
  • ユーザーが続行を望んでいると思い込む

必ず行うこと:

  • 直ちに停止する
  • 問題を明確に報告する
  • 検証結果を提示する
  • どのように進めるかユーザーに尋ねる
  • 決定を記録する
Git の問題

してはいけないこと:

  • 強制プッシュする
  • 許可なくフックを省略する
  • 許可なくリベースを行う
  • 許可なく Git の履歴を変更する

必ず行うこと:

  • ユーザーに指示を求める
  • 問題を説明する
  • 選択肢を提示する
  • 解決策を記録する
権限の問題

禁止事項:

  • root 所有のファイルを作成しない
  • 許可なく sudo を使用しない
  • 権限の確認を省略しない

必須事項:

  • 権限の問題を報告する
  • 所有権を修正するようユーザーに依頼する
  • 修正後に検証する
  • 適切な所有権を文書化する

ワークフローの例

ワークフロー 1:シンプルな Web スタックの作成
User: "Create a new stack for a web application with nginx"
Assistant: "I'll create a new web stack with nginx. Let me gather some information first."

**Questions**:
1. "What's the project name?"
   User: "mywebapp"

2. "Do you have a remote git repository URL?"
   User: "https://gitlab.com/user/mywebapp.git"

3. "What environment is this for?"
   User: "production"

**Actions**:
1. Create directory structure
2. Initialize git and connect to remote
3. Configure git (main branch, ff-only)
4. Create docker-compose.yml with nginx
5. Use docker-validation to validate
6. Use config-generator to create nginx config
7. Create validation scripts
8. Install git hooks
9. Generate all documentation
10. Run full validation
11. Report status

**Completion**:
"Stack creation complete! All validations passed:
✓ stack-validator: NO issues
✓ secrets-manager: NO issues (no secrets needed)
✓ docker-validation: NO issues

Next steps:
1. Review generated files
2. Customize .env from .env.example
3. Run: docker compose up -d"
ワークフロー 2:完全なアプリケーションスタックの作成
User: "Create a stack with nginx, PostgreSQL, and Redis"
Assistant: "I'll create a full application stack. Let me gather information."

**Questions**:
1. "Project name?" → "myapp"
2. "Remote repository?" → "Yes, https://gitlab.com/user/myapp.git"
3. "Environment?" → "production"

**Actions**:
1. Create directory structure with config/{nginx,postgres,redis}
2. Initialize git, connect remote, configure (main, ff-only)
3. Create docker-compose.yml with all three services
4. Validate with docker-validation
5. Use config-generator for each service:
   - nginx production config
   - PostgreSQL production config
   - Redis production config
6. Use secrets-manager for:
   - PostgreSQL password
   - Redis password
   - Create Docker secrets
7. Create validation scripts and install hooks
8. Generate all documentation
9. Run full validation (stack-validator, secrets-manager, docker-validation)
10. Initial commit

**Completion**:
"Stack creation complete! All validations passed:
✓ stack-validator: NO issues
✓ secrets-manager: All secrets properly configured
✓ docker-validation: NO issues

Services configured:
- nginx (port 80)
- PostgreSQL (port 5432, password in Docker secret)
- Redis (port 6379, password in Docker secret)

Next steps:
1. Review secrets in ./secrets/
2. Customize .env from .env.example
3. Run: docker compose up -d"

まとめ

stack-creator スキルは次のことを行います。

  1. 統合:stack-validator、secrets-manager、docker-validation、config-generator と統合します
  2. 徹底:作成完了と見なす前に、完全な検証を必ず実施します
  3. 厳守:回避策は決して使用せず、常にユーザーに指示を求めます
  4. 設定:git を適切に設定します(main ブランチ、ff-only マージ)
  5. インストール:検証用フックとスクリプトをインストールします
  6. 文書化:すべてを ./docs/ に記録します
  7. 作成:GitLab Stack Management のパターンに従い、本番環境対応のスタックを作成します

3 つすべてのバリデーターが問題なく合格し、すべてのドキュメントが揃った場合にのみ、スタックの作成は完了となります。

コメント