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 プレフィックス・番号が省略可能