---
description: TODOコメント自動検出・Issue化
---

# Miyabi TODOコメント自動検出

コード内のTODOコメントを自動的に検出して、GitHub Issueを作成します。

## MCPツール

### `miyabi__todos`
TODOコメントをスキャンしてIssue作成

**パラメータ**:
- `path`: スキャン対象パス（デフォルト: `./src`）
- `autoCreate`: 自動的にIssue作成するか（デフォルト: false）

**使用例**:
```
TODOをスキャンして表示:
miyabi__todos({ path: "./src" })

TODOを検出して自動的にIssue作成:
miyabi__todos({ path: "./src", autoCreate: true })

プロジェクト全体をスキャン:
miyabi__todos({ path: "." })
```

## 動作フロー

```
コードベーススキャン
    ↓
TODOコメント検出
    ↓
重複チェック（既存Issueとの照合）
    ↓
[autoCreate=true の場合]
    ↓
GitHub Issue自動作成
    ↓
適切なLabel付与
    ↓
結果レポート表示
```

## 検出パターン

Miyabiは以下のパターンのTODOコメントを検出します:

### 基本パターン
```typescript
// TODO: ユーザー認証機能を追加
// FIXME: エラーハンドリングを改善
// HACK: 一時的な回避策（後で修正）
// XXX: 要確認・注意が必要
// NOTE: 重要な実装メモ
```

### 優先度付き
```typescript
// TODO(P0): 緊急対応が必要
// TODO(P1): 高優先度
// TODO(P2): 通常優先度
// TODO(P3): 低優先度
```

### 担当者指定
```typescript
// TODO(@username): ユーザー認証実装
// FIXME(@team-frontend): UIバグ修正
```

### 期限付き
```typescript
// TODO(2025-12-31): 年内に実装
// FIXME(before-v1.0): リリース前に修正
```

### 複合
```typescript
// TODO(P1)(@backend-team)(2025-11-01): API実装
```

## Issue作成時のLabel付与

自動的に以下のLabelが付与されます:

| TODOタイプ | Label | 優先度 |
|-----------|-------|--------|
| TODO | `type:feature`, `source:code-todo` | 規模により自動判定 |
| FIXME | `type:bug`, `source:code-fixme` | 緊急度-中 |
| HACK | `type:refactor`, `source:code-hack` | 技術的負債 |
| XXX | `type:investigation`, `source:code-xxx` | 要確認 |
| NOTE | `type:docs`, `source:code-note` | ドキュメント |

### 優先度マッピング
- `P0` → `緊急度-即時`
- `P1` → `緊急度-高`
- `P2` → `緊急度-中`
- `P3` → `緊急度-低`

## コマンドライン実行

MCPツールの代わりにコマンドラインでも実行可能:

```bash
# TODOをスキャンして表示
npx miyabi todos --path ./src

# 自動的にIssue作成
npx miyabi todos --path ./src --auto-create

# 特定のパターンのみ検出
npx miyabi todos --path . --pattern "TODO|FIXME"

# ドライラン（Issue作成しない）
npx miyabi todos --path ./src --auto-create --dry-run
```

## 環境変数

`.env` ファイルに以下を設定:

```bash
GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
REPOSITORY=owner/repo
```

## 出力形式

### スキャン結果（autoCreate=false）

```
📝 TODOスキャン結果

検出: 15件

src/auth/login.ts:42
  // TODO(P1): MFA対応を追加
  タイプ: TODO
  優先度: P1
  ファイル: src/auth/login.ts:42

src/api/users.ts:123
  // FIXME: レート制限エラー処理を改善
  タイプ: FIXME
  ファイル: src/api/users.ts:123

...

サマリー:
  TODO: 8件
  FIXME: 4件
  HACK: 2件
  XXX: 1件

推奨アクション:
  1. npx miyabi todos --auto-create でIssue化
  2. 高優先度(P0/P1)から対応
```

### Issue作成結果（autoCreate=true）

```
📝 TODOスキャン & Issue作成

検出: 15件
作成: 12件（既存3件スキップ）

✅ Issue #145作成: [TODO] MFA対応を追加
   ファイル: src/auth/login.ts:42
   Label: type:feature, source:code-todo, 緊急度-高
   URL: https://github.com/owner/repo/issues/145

✅ Issue #146作成: [FIXME] レート制限エラー処理を改善
   ファイル: src/api/users.ts:123
   Label: type:bug, source:code-fixme, 緊急度-中
   URL: https://github.com/owner/repo/issues/146

...

スキップ: 3件（既存Issueあり）
  - "ユーザー認証機能を追加" → Issue #120
  - "エラーハンドリングを改善" → Issue #98
  - "一時的な回避策" → Issue #77

サマリー:
  作成: 12件
  スキップ: 3件
  失敗: 0件
```

## 重複チェック

既存Issueとの重複を防ぐため、以下をチェックします:

1. **タイトル類似度**: 既存IssueタイトルとのLevenshtein距離
2. **ファイルパス**: 同じファイル・行数のTODOは重複とみなす
3. **Labelパターン**: `source:code-todo` Labelで既存TODO由来Issueを検出

重複判定されたTODOはスキップされ、既存Issue URLが表示されます。

## Issueテンプレート

自動作成されるIssueは以下の形式:

```markdown
## 📝 コード内TODO

**タイプ**: TODO
**優先度**: P1
**ファイル**: src/auth/login.ts:42

### 内容

MFA対応を追加

### コンテキスト

\`\`\`typescript
// TODO(P1): MFA対応を追加
async function login(email: string, password: string) {
  // 現在の実装
  return authenticateUser(email, password);
}
\`\`\`

### 推奨アクション

- [ ] MFA実装の設計
- [ ] TOTP/SMS認証の選択
- [ ] バックアップコード生成
- [ ] テスト追加

---

🤖 Generated by Miyabi Todos Auto Mode
Source: src/auth/login.ts:42
```

## 除外パターン

以下のファイル・ディレクトリは自動的にスキップされます:

```
node_modules/
.git/
dist/
build/
coverage/
*.min.js
*.bundle.js
*.test.ts
*.spec.ts
```

カスタム除外パターンを `.miyabi.yml` で設定可能:

```yaml
todos:
  exclude:
    - "legacy/**"
    - "deprecated/**"
    - "*.generated.ts"
```

## 使用例

### 例1: スキャンのみ

```
あなた: "src/配下のTODOコメントをスキャンして"

Claude: [miyabi__todos({ path: "./src" }) を実行]

📝 TODOスキャン結果

検出: 8件

src/auth/login.ts:42 - TODO(P1): MFA対応を追加
src/api/users.ts:123 - FIXME: レート制限エラー処理を改善
src/db/connection.ts:56 - HACK: 一時的な接続プール回避策
...

サマリー: TODO 4件, FIXME 2件, HACK 2件
```

### 例2: 自動Issue化

```
あなた: "TODOコメントを全部Issue化して"

Claude: [miyabi__todos({ path: ".", autoCreate: true }) を実行]

📝 TODOスキャン & Issue作成

✅ Issue #145作成: [TODO] MFA対応を追加
✅ Issue #146作成: [FIXME] レート制限エラー処理を改善
✅ Issue #147作成: [HACK] 接続プール回避策を修正
...

完了: 8件のIssueを作成しました
```

## トラブルシューティング

### TODOが検出されない
```
⚠️  No TODO comments found

確認:
1. パスが正しいか確認（相対パスまたは絶対パス）
2. TODOコメント形式が正しいか確認
3. 除外パターンに該当していないか確認
```

### Issue作成に失敗
```
❌ Failed to create issue: Unauthorized

解決策:
1. GITHUB_TOKEN が設定されているか確認
2. repo権限があるか確認
3. リポジトリへの書き込み権限があるか確認
```

### 重複Issue作成
```
ℹ️  Skipped (duplicate): Issue #120 already exists

これは正常動作です。既存Issueがある場合は自動的にスキップされます。
```

## ベストプラクティス

### 🎯 推奨ワークフロー

1. **定期スキャン**: 週次でTODOをスキャン
2. **優先度付け**: P0/P1から順に対応
3. **クリーンアップ**: 完了したTODOはコードから削除
4. **ドキュメント化**: 重要なTODOはIssueに移行

### ⚠️ 注意事項

- **コメント削除**: Issue化後もTODOコメントは自動削除されません（手動削除推奨）
- **重複チェック**: 既存Issueがある場合は新規作成されません
- **Label付与**: 自動付与されるLabelは `.miyabi.yml` でカスタマイズ可能

### 📝 TODOコメントの書き方

**Good**:
```typescript
// TODO(P1)(@backend-team): ユーザー認証APIを実装
// FIXME(before-v1.0): メモリリーク修正
// HACK: 一時的な回避策 - Issue #123で根本対応予定
```

**Bad**:
```typescript
// todo: あとでなんとかする（曖昧）
// FIXME（全角カッコは検出されない）
// TODO 直す（内容が不明確）
```

---

💡 **ヒント**: TODOコメントは「未来の自分への伝言」です。具体的に書きましょう。
