workflow-setup について
workflow-setup は、GitHub プロジェクトに GitHub Actions の CI/CD ワークフローを設定するスキルです。新規・既存のプロジェクトで言語を検出し、不足ファイルの生成と検証を支援します。
主な機能
- 01プロジェクト言語の検出
- 02不足しているワークフローファイルの特定
- 03言語別ワークフローの生成
- 04YAML と GitHub ワークフロー定義の検証
- 05シェルスクリプトの失敗処理確認
活用シーン
- 01新しい GitHub プロジェクトへの CI ワークフロー追加
- 02テストとコード品質チェックの自動化
- 03デプロイパイプラインの作成
- 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 ワークフロー
- test.yml - push/PR 時に pytest を実行します
- lint.yml - ruff によるリンティングを実行します
- typecheck.yml - mypy による型チェックを実行します
- publish.yml - リリース時に PyPI へ公開します
Rust ワークフロー
- ci.yml - テスト/リンティング/チェックをまとめたワークフロー
- release.yml - リリースをビルドして公開します
TypeScript ワークフロー
- test.yml - Jest テストを実行します
- lint.yml - ESLint を実行します
- build.yml - 本番環境向けにビルドします
- 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 固有のファイルを生成せずに停止すること。
コメント
Markdown 対応