mcpField
W
workflow-setup

workflow-setup

github.com/atholaクラウド・DevOps343104 回インストール1 日前に更新
リポジトリ

workflow-setup について

workflow-setup は、GitHub プロジェクトに GitHub Actions の CI/CD ワークフローを設定するスキルです。新規・既存のプロジェクトで言語を検出し、不足ファイルの生成と検証を支援します。

主な機能

  1. 01プロジェクト言語の検出
  2. 02不足しているワークフローファイルの特定
  3. 03言語別ワークフローの生成
  4. 04YAML と GitHub ワークフロー定義の検証
  5. 05シェルスクリプトの失敗処理確認

活用シーン

  1. 01新しい GitHub プロジェクトへの CI ワークフロー追加
  2. 02テストとコード品質チェックの自動化
  3. 03デプロイパイプラインの作成
  4. 04既存プロジェクトへの不足ワークフロー追加

インストール

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

$npx skills add https://github.com/athola/claude-night-market --skill workflow-setup

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

詳細

ワークフロー設定スキル

継続的インテグレーションとデプロイのために、GitHub Actions のワークフローを設定します。

使用する場合

  • 新しいプロジェクトに CI/CD が必要な場合
  • 既存のプロジェクトに不足しているワークフローを追加する場合
  • ワークフローのバージョンを最新に更新する場合
  • テストと品質チェックを自動化する場合
  • デプロイパイプラインを設定する場合

使用しない場合

  • GitHub Actions のワークフローがすでに設定済みで、最新の場合
  • プロジェクトで別の CI プラットフォーム(GitLab CI、CircleCI など)を使用している場合
  • GitHub でホストされていない場合
  • 既存のワークフローを更新する場合は、代わりに /attune:upgrade-project を使用してください

標準ワークフロー

Python ワークフロー
  1. test.yml - push/PR 時に pytest を実行します
  2. lint.yml - ruff によるリンティングを実行します
  3. typecheck.yml - mypy による型チェックを実行します
  4. publish.yml - リリース時に PyPI へ公開します
Rust ワークフロー
  1. ci.yml - テスト/リンティング/チェックをまとめたワークフロー
  2. release.yml - リリースをビルドして公開します
TypeScript ワークフロー
  1. test.yml - Jest テストを実行します
  2. lint.yml - ESLint を実行します
  3. build.yml - 本番環境向けにビルドします
  4. deploy.yml - ホスティングサービス(Vercel、Netlify など)にデプロイします

ワークフロー

1. 既存のワークフローを確認する
ls -la .github/workflows/

確認: --help フラグを付けてコマンドを実行し、利用可能であることを確認します。

2. 不足しているワークフローを特定する
from project_detector import ProjectDetector

detector = ProjectDetector(Path.cwd())
language = detector.detect_language()

required_workflows = {
    "python": ["test.yml", "lint.yml", "typecheck.yml"],
    "rust": ["ci.yml"],
    "typescript": ["test.yml", "lint.yml", "build.yml"],
}

missing = detector.get_missing_configurations(language)

確認: pytest -v を実行し、テストが成功することを確認します。

3. ワークフローテンプレートをレンダリングする
workflows_dir = Path(".github/workflows")
workflows_dir.mkdir(parents=True, exist_ok=True)

for workflow in required_workflows[language]:
    template = templates_dir / language / "workflows" / f"{workflow}.template"
    output = workflows_dir / workflow

    engine.render_file(template, output)
    print(f"✓ Created: {output}")

確認: --help フラグを付けてコマンドを実行し、利用可能であることを確認します。

4. ワークフローを検証する
# Syntax check (requires act or gh CLI)
gh workflow list

# Or manually check YAML syntax
python3 -c "import yaml; yaml.safe_load(open('.github/workflows/test.yml'))"

確認: pytest -v を実行し、テストが成功することを確認します。

ワークフローのベストプラクティス

最新のアクションバージョンを使用する
# Good - pinned to major version
- uses: actions/checkout@v4
- uses: actions/setup-python@v5

# Avoid - unpinned or outdated
- uses: actions/checkout@v2
- uses: actions/setup-python@latest

確認: pytest -v を実行し、テストが成功することを確認します。

マトリックステスト(Python)
strategy:
  matrix:
    python-version: ["3.10", "3.11", "3.12"]
    os: [ubuntu-latest, macos-latest, windows-latest]

確認: pytest -v を実行し、テストが成功することを確認します。

依存関係をキャッシュする
- uses: actions/setup-python@v5
  with:
    python-version: '3.10'
    cache: 'pip'  # Cache pip dependencies

確認: python --version を実行し、Python 環境を確認します。

ワークフロー内のシェルスクリプトの安全性

ワークフローにインラインのシェルスクリプトを記述する場合は、終了コードを適切に処理してください。

# BAD - pipeline masks exit code
- run: |
    make typecheck 2>&1 | grep -v "^make\["
    echo "Typecheck passed"  # Runs even if make failed!

# GOOD - use pipefail
- run: |
    set -eo pipefail
    make typecheck 2>&1 | grep -v "^make\["

# GOOD - capture exit code explicitly
- run: |
    output=$(make typecheck 2>&1) || exit_code=$?
    echo "$output" | grep -v "^make\[" || true
    exit ${exit_code:-0}

複雑なラッパースクリプトを統合する前に、/pensive:shell-review を実行してください。

ワークフローの更新

ワークフローを最新バージョンに更新するには、次の手順を実行します。

/attune:upgrade-project --component workflows

確認: --help フラグを付けてコマンドを実行し、利用可能であることを確認します。

関連スキル

  • Skill(attune:project-init) - プロジェクトの完全な初期化
  • Skill(sanctum:pr-prep) - CI チェックを含む PR の準備

完了条件

  • 検出された言語に必要なすべてのワークフローファイルが .github/workflows/ に存在し (Python:test.yml + lint.yml + typecheck.yml、Rust:ci.yml、TypeScript:test.yml + lint.yml + build.yml)、python3 -c "import yaml; yaml.safe_load(open('...'))" で検証した有効な YAML 構文になっていること。
  • gh workflow list の結果に作成した各ワークフローファイルが含まれ、GitHub が ワークフロー定義を認識していること。
  • ワークフロー内のインラインシェルスクリプトが set -eo pipefail を使用しているか、終了コードを 明示的に取得していること。pipefail を使わないパイプライン内で失敗が隠されるケース(cmd | grep)は エラーとして報告されること。
  • プロジェクトが GitHub Actions 以外の CI プラットフォーム(GitLab CI、CircleCI)を使用している場合、 スキルがこの非互換性を報告し、GitHub 固有のファイルを生成せずに停止すること。

コメント