AgentSkillsCN

Wf Init

Wf Init

SKILL.md
skill
---
name: wf-init
description: 新規プロジェクトに .github/ を導入した際の初期設定を行う。settings.json の作成とプロジェクト固有値の設定を対話的にガイドする。
---

# プロジェクト初期設定

`.github/` を新規プロジェクトにコピーした後、プロジェクト固有の設定を行う。

## 前提条件

- `.github/` ディレクトリが対象プロジェクトにコピー済み
- Git リポジトリが初期化済み
- GitHub リモートが設定済み

## 手順

### 1. 既存設定の確認

`.github/settings.json` が存在するか確認する。

- **存在する場合**: 内容を読み取り、ユーザーに更新が必要か確認
- **存在しない場合**: 新規作成する(以降のステップへ)

### 2. GitHub 情報の自動検出

Git リモートから owner と repo を自動取得する:

```bash
git remote get-url origin
```

URL から `owner` と `repo` を抽出する。

例:
- `https://github.com/owner/repo.git` → `owner`, `repo`
- `git@github.com:owner/repo.git` → `owner`, `repo`

### 3. ユーザーへの確認

以下の項目をユーザーに質問して確定する:

| 項目 | 自動検出 | 質問例 |
|---|---|---|
| `github.owner` | ✅ Git remote から | 「GitHub owner は `<検出値>` でよいですか?」 |
| `github.repo` | ✅ Git remote から | 「リポジトリ名は `<検出値>` でよいですか?」 |
| `github.mergeMethod` | ❌ | 「マージ方式は?(merge / squash / rebase)」 |
| `issueTracker.provider` | ❌ | 「Issue トラッカーは?(linear / github / jira / none)」 |
| `issueTracker.mcpServer` | ❌ | 「Issue トラッカーの MCP サーバー名は?」 |
| `issueTracker.team` | ❌ | 「チーム名は?」 |
| `issueTracker.projectId` | ❌ | 「プロジェクト ID は?」 |
| `issueTracker.prefix` | ❌ | 「Issue プレフィックスは?(例: SC, PROJ)」 |
| `branch.user` | ✅ GitHub user から | 「ブランチのユーザー名は `<検出値>` でよいですか?」 |
| `project.name` | ✅ repo 名から | 「プロジェクト名は `<検出値>` でよいですか?」 |
| `project.language` | ❌ | 「主要言語は?(javascript / typescript / python 等)」 |
| `project.entryPoint` | ❌ | 「エントリーポイントは?(例: index.js, src/main.ts)」 |
| `project.test.command` | ❌ | 「テストコマンドは?(例: node --test, npm test, pytest)」 |
| `project.test.directory` | ❌ | 「テストディレクトリは?(例: tests/, __tests__/)」 |
| `project.test.pattern` | ❌ | 「テストファイルのパターンは?(例: *.test.js, test_*.py)」 |
| `agents.model` | ❌ | 「エージェントのモデルは?(例: Claude Sonnet 4.5 (copilot))」 |

### 4. settings.json の生成

収集した情報で `.github/settings.json` を作成する:

```json
{
  "$schema": "./settings.schema.json",
  "github": {
    "owner": "<owner>",
    "repo": "<repo>",
    "mergeMethod": "<merge|squash|rebase>"
  },
  "issueTracker": {
    "provider": "<linear|github|jira|none>",
    "mcpServer": "<MCP サーバー名>",
    "team": "<チーム名>",
    "projectId": "<プロジェクトID>",
    "prefix": "<プレフィックス>"
  },
  "branch": {
    "user": "<GitHub ユーザー名>",
    "format": "<user>/<prefix>-<number>-<type>-<description>"
  },
  "project": {
    "name": "<プロジェクト名>",
    "language": "<言語>",
    "entryPoint": "<エントリーポイント>",
    "test": {
      "command": "<テストコマンド>",
      "directory": "<テストディレクトリ>",
      "pattern": "<テストファイルパターン>"
    }
  },
  "agents": {
    "model": "<モデル名>"
  }
}
```

### 5. エージェントファイルの更新

`agents.model` の値を全エージェントファイルの `model:` フロントマターに反映する:

```
.github/agents/*.agent.md の YAML frontmatter 内:
  model: "<agents.model の値>"
```

対象ファイル:
- `agents/developer.agent.md`
- `agents/reviewer.agent.md`
- `agents/manager.agent.md`

### 6. GitHub リポジトリ設定(任意)

`delete_branch_on_merge` を有効にするか確認:

```
mcp_io_github_git → リポジトリ設定の更新
  delete_branch_on_merge: true
```

### 7. 完了メッセージ

設定完了後、以下を表示:

```
✅ プロジェクト初期設定が完了しました。

設定ファイル: .github/settings.json
- GitHub: <owner>/<repo>
- Issue トラッカー: <provider> (<team>)
- ブランチ形式: <format>
- エージェントモデル: <model>

すべてのスキルがこの設定を参照して動作します。
設定を変更する場合は .github/settings.json を直接編集してください。
```

## settings.json スキーマ

正式なスキーマは `.github/settings.schema.json` に定義されている。
settings.json の先頭に `"$schema": "./settings.schema.json"` を含めると VS Code で自動補完・バリデーションが有効になる。

| キー | 型 | 必須 | 説明 |
|---|---|---|---|
| `github.owner` | string | ✅ | GitHub リポジトリのオーナー |
| `github.repo` | string | ✅ | GitHub リポジトリ名 |
| `github.mergeMethod` | string | ✅ | マージ方式(`merge` / `squash` / `rebase`) |
| `issueTracker.provider` | string | オプション | Issue トラッカー種別(`linear` / `github` / `jira` / `none`) |
| `issueTracker.mcpServer` | string | ⚠️ | MCP サーバー名(provider が `none` 以外の場合必要) |
| `issueTracker.team` | string | ⚠️ | チーム名(provider が `none` 以外の場合必要) |
| `issueTracker.projectId` | string | ❌ | プロジェクト ID(任意) |
| `issueTracker.prefix` | string | ⚠️ | Issue プレフィックス(provider が `none` 以外の場合必要) |
| `branch.user` | string | ✅ | ブランチ名のユーザー部分 |
| `branch.format` | string | ✅ | ブランチ名のフォーマット |
| `project.name` | string | ✅ | プロジェクト名 |
| `project.language` | string | ✅ | 主要プログラミング言語 |
| `project.entryPoint` | string | ❌ | エントリーポイントファイル |
| `project.test.command` | string | ❌ | テスト実行コマンド(例: `node --test`, `pytest`) |
| `project.test.directory` | string | ❌ | テストディレクトリ(例: `tests/`) |
| `project.test.pattern` | string | ❌ | テストファイルパターン(例: `*.test.js`) |
| `agents.model` | string | ❌ | エージェントが使用するモデル名(全エージェント共通) |

## Issue トラッカーが不要な場合

`issueTracker.provider` を `"none"` に設定すると:

- `wf-new-feature` スキルで Issue 作成をスキップ
- `wf-cleanup` スキルで Issue ステータス更新をスキップ
- ブランチ名から Issue プレフィックス・番号が省略可能