@k2works/claude-code-booster 0.8.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/lib/assets/.claude/README.md +54 -136
  2. package/lib/assets/.claude/assets/.gitkeep +0 -0
  3. package/lib/assets/.claude/commands/git-commit.md +47 -0
  4. package/lib/assets/.claude/commands/ops.md +16 -16
  5. package/lib/assets/.claude/scripts/.gitkeep +0 -0
  6. package/lib/assets/README.md +77 -3
  7. package/lib/assets/apps/.gitkeep +0 -0
  8. package/package.json +1 -1
  9. package/lib/assets/.claude/agents/roles/analyzer.md +0 -267
  10. package/lib/assets/.claude/agents/roles/architect.md +0 -233
  11. package/lib/assets/.claude/agents/roles/backend.md +0 -303
  12. package/lib/assets/.claude/agents/roles/frontend.md +0 -294
  13. package/lib/assets/.claude/agents/roles/mobile.md +0 -309
  14. package/lib/assets/.claude/agents/roles/performance.md +0 -254
  15. package/lib/assets/.claude/agents/roles/qa.md +0 -266
  16. package/lib/assets/.claude/agents/roles/reviewer.md +0 -252
  17. package/lib/assets/.claude/agents/roles/security.md +0 -392
  18. package/lib/assets/.claude/assets/confirm.mp3 +0 -0
  19. package/lib/assets/.claude/assets/perfect.mp3 +0 -0
  20. package/lib/assets/.claude/assets/silent.wav +0 -0
  21. package/lib/assets/.claude/commands/analyze-dependencies.md +0 -158
  22. package/lib/assets/.claude/commands/analyze-performance.md +0 -116
  23. package/lib/assets/.claude/commands/check-fact.md +0 -104
  24. package/lib/assets/.claude/commands/check-github-ci.md +0 -53
  25. package/lib/assets/.claude/commands/check-prompt.md +0 -461
  26. package/lib/assets/.claude/commands/commit-message.md +0 -348
  27. package/lib/assets/.claude/commands/context7.md +0 -50
  28. package/lib/assets/.claude/commands/design-patterns.md +0 -186
  29. package/lib/assets/.claude/commands/explain-code.md +0 -75
  30. package/lib/assets/.claude/commands/fix-error.md +0 -258
  31. package/lib/assets/.claude/commands/multi-role.md +0 -291
  32. package/lib/assets/.claude/commands/next.md +0 -136
  33. package/lib/assets/.claude/commands/pr-auto-update.md +0 -460
  34. package/lib/assets/.claude/commands/pr-create.md +0 -249
  35. package/lib/assets/.claude/commands/pr-feedback.md +0 -143
  36. package/lib/assets/.claude/commands/pr-issue.md +0 -78
  37. package/lib/assets/.claude/commands/pr-list.md +0 -66
  38. package/lib/assets/.claude/commands/pr-review.md +0 -142
  39. package/lib/assets/.claude/commands/refactor.md +0 -147
  40. package/lib/assets/.claude/commands/role-debate.md +0 -571
  41. package/lib/assets/.claude/commands/role-help.md +0 -276
  42. package/lib/assets/.claude/commands/role.md +0 -360
  43. package/lib/assets/.claude/commands/screenshot.md +0 -103
  44. package/lib/assets/.claude/commands/search-gemini.md +0 -66
  45. package/lib/assets/.claude/commands/semantic-commit.md +0 -1129
  46. package/lib/assets/.claude/commands/sequential-thinking.md +0 -90
  47. package/lib/assets/.claude/commands/show-plan.md +0 -59
  48. package/lib/assets/.claude/commands/smart-review.md +0 -174
  49. package/lib/assets/.claude/commands/spec.md +0 -559
  50. package/lib/assets/.claude/commands/style-ai-writing.md +0 -186
  51. package/lib/assets/.claude/commands/task.md +0 -223
  52. package/lib/assets/.claude/commands/tech-debt.md +0 -87
  53. package/lib/assets/.claude/commands/ultrathink.md +0 -65
  54. package/lib/assets/.claude/commands/update-dart-doc.md +0 -202
  55. package/lib/assets/.claude/commands/update-doc-string.md +0 -306
  56. package/lib/assets/.claude/commands/update-flutter-deps.md +0 -105
  57. package/lib/assets/.claude/commands/update-node-deps.md +0 -105
  58. package/lib/assets/.claude/commands/update-rust-deps.md +0 -107
  59. package/lib/assets/.claude/scripts/auto-comment.sh +0 -16
  60. package/lib/assets/.claude/scripts/check-ai-commit.sh +0 -20
  61. package/lib/assets/.claude/scripts/check-continue.sh +0 -97
  62. package/lib/assets/.claude/scripts/check-locales.sh +0 -1080
  63. package/lib/assets/.claude/scripts/check-project-plan.sh +0 -25
  64. package/lib/assets/.claude/scripts/debug-hook.sh +0 -7
  65. package/lib/assets/.claude/scripts/deny-check.sh +0 -69
  66. package/lib/assets/.claude/scripts/install.sh +0 -174
  67. package/lib/assets/.claude/scripts/ja-space-exclusions.json +0 -18
  68. package/lib/assets/.claude/scripts/ja-space-format.sh +0 -45
  69. package/lib/assets/.claude/scripts/preserve-file-permissions.sh +0 -83
  70. package/lib/assets/.claude/scripts/statusline.sh +0 -153
  71. /package/lib/assets/{app → .claude/agents/roles}/.gitkeep +0 -0
@@ -1,460 +0,0 @@
1
- ## PR Auto Update
2
-
3
- ## 概要
4
-
5
- Pull Request の説明とラベルを自動的に更新するコマンドです。Git の変更内容を分析して、適切な説明文とラベルを生成・設定します。
6
-
7
- ## 使い方
8
-
9
- ```bash
10
- /pr-auto-update [オプション] [PR 番号]
11
- ```
12
-
13
- ### オプション
14
-
15
- - `--pr <番号>` : 対象の PR 番号を指定(省略時は現在のブランチから自動検出)
16
- - `--description-only` : 説明文のみ更新(ラベルは変更しない)
17
- - `--labels-only` : ラベルのみ更新(説明文は変更しない)
18
- - `--dry-run` : 実際の更新は行わず、生成される内容のみ表示
19
- - `--lang <言語>` : 言語を指定(ja, en)
20
-
21
- ### 基本例
22
-
23
- ```bash
24
- # 現在のブランチの PR を自動更新
25
- /pr-auto-update
26
-
27
- # 特定の PR を更新
28
- /pr-auto-update --pr 1234
29
-
30
- # 説明文のみ更新
31
- /pr-auto-update --description-only
32
-
33
- # ドライランで確認
34
- /pr-auto-update --dry-run
35
- ```
36
-
37
- ## 機能詳細
38
-
39
- ### 1. PR の自動検出
40
-
41
- 現在のブランチから対応する PR を自動検出:
42
-
43
- ```bash
44
- # ブランチから PR を検索
45
- gh pr list --head $(git branch --show-current) --json number,title,url
46
- ```
47
-
48
- ### 2. 変更内容の分析
49
-
50
- 以下の情報を収集・分析:
51
-
52
- - **ファイル変更**: 追加・削除・変更されたファイル
53
- - **コード分析**: import 文、関数定義、クラス定義の変更
54
- - **テスト**: テストファイルの有無と内容
55
- - **ドキュメント**: README、docs の更新
56
- - **設定**: package.json、pubspec.yaml、設定ファイルの変更
57
- - **CI/CD**: GitHub Actions、workflow の変更
58
-
59
- ### 3. 説明文の自動生成
60
-
61
- #### テンプレート処理の優先順位
62
-
63
- 1. **既存の PR 説明**: 既に記述されている内容を**完全に踏襲**
64
- 2. **プロジェクトテンプレート**: `.github/PULL_REQUEST_TEMPLATE.md` から構造を取得
65
- 3. **デフォルトテンプレート**: 上記が存在しない場合のフォールバック
66
-
67
- #### 既存内容の保持ルール
68
-
69
- **重要**: 既存の内容は変更しない
70
-
71
- - 書かれているセクションは保持
72
- - 空のセクションのみ補完
73
- - 機能的なコメント(Copilot review rule など)は保持
74
-
75
- #### プロジェクトテンプレートの使用
76
-
77
- ```bash
78
- # .github/PULL_REQUEST_TEMPLATE.md の構造を解析
79
- parse_template_structure() {
80
- local template_file="$1"
81
-
82
- if [ -f "$template_file" ]; then
83
- # セクション構造を抽出
84
- grep -E '^##|^###' "$template_file"
85
-
86
- # コメントプレースホルダーを特定
87
- grep -E '<!--.*-->' "$template_file"
88
-
89
- # 既存のテンプレート構造を完全に踏襲
90
- cat "$template_file"
91
- fi
92
- }
93
- ```
94
-
95
- ### 4. ラベルの自動設定
96
-
97
- #### ラベル取得の仕組み
98
-
99
- **優先順位**:
100
-
101
- 1. **`.github/labels.yml`**: プロジェクト固有のラベル定義から取得
102
- 2. **GitHub API**: `gh api repos/{OWNER}/{REPO}/labels --jq '.[].name'` で既存ラベルを取得
103
-
104
- #### 自動判定ルール
105
-
106
- **ファイルパターンベース**:
107
-
108
- - ドキュメント: `*.md`, `README`, `docs/` → `documentation|docs|doc` を含むラベル
109
- - テスト: `test`, `spec` → `test|testing` を含むラベル
110
- - CI/CD: `.github/`, `*.yml`, `Dockerfile` → `ci|build|infra|ops` を含むラベル
111
- - 依存関係: `package.json`, `pubspec.yaml`, `requirements.txt` → `dependencies|deps` を含むラベル
112
-
113
- **変更内容ベース**:
114
-
115
- - バグ修正: `fix|bug|error|crash|修正` → `bug|fix` を含むラベル
116
- - 新機能: `feat|feature|add|implement|新機能|実装` → `feature|enhancement|feat` を含むラベル
117
- - リファクタリング: `refactor|clean|リファクタ` → `refactor|cleanup|clean` を含むラベル
118
- - パフォーマンス: `performance|perf|optimize|パフォーマンス` → `performance|perf` を含むラベル
119
- - セキュリティ: `security|secure|セキュリティ` → `security` を含むラベル
120
-
121
- #### 制約
122
-
123
- - **最大 3 個まで**: 自動選択されるラベル数の上限
124
- - **既存ラベルのみ**: 新しいラベルの作成は禁止
125
- - **部分マッチ**: ラベル名にキーワードが含まれているかで判定
126
-
127
- #### 実際の使用例
128
-
129
- **`.github/labels.yml` が存在する場合**:
130
-
131
- ```bash
132
- # ラベル定義から自動取得
133
- grep "^- name:" .github/labels.yml | sed "s/^- name: '\?\([^']*\)'\?/\1/"
134
-
135
- # 例: プロジェクト固有のラベル体系を使用
136
- ```
137
-
138
- **GitHub API から取得する場合**:
139
-
140
- ```bash
141
- # 既存ラベルの一覧取得
142
- gh api repos/{OWNER}/{REPO}/labels --jq '.[].name'
143
-
144
- # 例: bug, enhancement, documentation などの標準的なラベルを使用
145
- ```
146
-
147
- ### 5. 実行フロー
148
-
149
- ```bash
150
- #!/bin/bash
151
-
152
- # 1. PR の検出・取得
153
- detect_pr() {
154
- if [ -n "$PR_NUMBER" ]; then
155
- echo $PR_NUMBER
156
- else
157
- gh pr list --head $(git branch --show-current) --json number --jq '.[0].number'
158
- fi
159
- }
160
-
161
- # 2. 変更内容の分析
162
- analyze_changes() {
163
- local pr_number=$1
164
-
165
- # ファイル変更の取得
166
- gh pr diff $pr_number --name-only
167
-
168
- # 内容分析
169
- gh pr diff $pr_number | head -1000
170
- }
171
-
172
- # 3. 説明文の生成
173
- generate_description() {
174
- local pr_number=$1
175
- local changes=$2
176
-
177
- # 現在の PR 説明を取得
178
- local current_body=$(gh pr view $pr_number --json body --jq -r .body)
179
-
180
- # 既存内容があればそのまま使用
181
- if [ -n "$current_body" ]; then
182
- echo "$current_body"
183
- else
184
- # テンプレートから新規生成
185
- local template_file=".github/PULL_REQUEST_TEMPLATE.md"
186
- if [ -f "$template_file" ]; then
187
- generate_from_template "$(cat "$template_file")" "$changes"
188
- else
189
- generate_from_template "" "$changes"
190
- fi
191
- fi
192
- }
193
-
194
- # テンプレートからの生成
195
- generate_from_template() {
196
- local template="$1"
197
- local changes="$2"
198
-
199
- if [ -n "$template" ]; then
200
- # テンプレートをそのまま使用(HTML コメント保持)
201
- echo "$template"
202
- else
203
- # デフォルトフォーマットで生成
204
- echo "## What does this change?"
205
- echo ""
206
- echo "$changes"
207
- fi
208
- }
209
-
210
- # 4. ラベルの決定
211
- determine_labels() {
212
- local changes=$1
213
- local file_list=$2
214
- local pr_number=$3
215
-
216
- # 利用可能なラベルを取得
217
- local available_labels=()
218
- if [ -f ".github/labels.yml" ]; then
219
- # labels.yml からラベル名を抽出
220
- available_labels=($(grep "^- name:" .github/labels.yml | sed "s/^- name: '\?\([^']*\)'\?/\1/"))
221
- else
222
- # GitHub API からラベルを取得
223
- local repo_info=$(gh repo view --json owner,name)
224
- local owner=$(echo "$repo_info" | jq -r .owner.login)
225
- local repo=$(echo "$repo_info" | jq -r .name)
226
- available_labels=($(gh api "repos/$owner/$repo/labels" --jq '.[].name'))
227
- fi
228
-
229
- local suggested_labels=()
230
-
231
- # 汎用的なパターンマッチング
232
- analyze_change_patterns "$file_list" "$changes" available_labels suggested_labels
233
-
234
- # 最大 3 個に制限
235
- echo "${suggested_labels[@]:0:3}"
236
- }
237
-
238
- # 変更パターンからラベルを決定
239
- analyze_change_patterns() {
240
- local file_list="$1"
241
- local changes="$2"
242
- local -n available_ref=$3
243
- local -n suggested_ref=$4
244
-
245
- # ファイルタイプによる判定
246
- if echo "$file_list" | grep -q "\.md$\|README\|docs/"; then
247
- add_matching_label "documentation\|docs\|doc" available_ref suggested_ref
248
- fi
249
-
250
- if echo "$file_list" | grep -q "test\|spec"; then
251
- add_matching_label "test\|testing" available_ref suggested_ref
252
- fi
253
-
254
- # 変更内容による判定
255
- if echo "$changes" | grep -iq "fix\|bug\|error\|crash\|修正"; then
256
- add_matching_label "bug\|fix" available_ref suggested_ref
257
- fi
258
-
259
- if echo "$changes" | grep -iq "feat\|feature\|add\|implement\|新機能\|実装"; then
260
- add_matching_label "feature\|enhancement\|feat" available_ref suggested_ref
261
- fi
262
- }
263
-
264
- # マッチするラベルを追加
265
- add_matching_label() {
266
- local pattern="$1"
267
- local -n available_ref=$2
268
- local -n suggested_ref=$3
269
-
270
- # すでに 3 個ある場合はスキップ
271
- if [ ${#suggested_ref[@]} -ge 3 ]; then
272
- return
273
- fi
274
-
275
- # パターンにマッチする最初のラベルを追加
276
- for available_label in "${available_ref[@]}"; do
277
- if echo "$available_label" | grep -iq "$pattern"; then
278
- # 重複チェック
279
- local already_exists=false
280
- for existing in "${suggested_ref[@]}"; do
281
- if [ "$existing" = "$available_label" ]; then
282
- already_exists=true
283
- break
284
- fi
285
- done
286
-
287
- if [ "$already_exists" = false ]; then
288
- suggested_ref+=("$available_label")
289
- return
290
- fi
291
- fi
292
- done
293
- }
294
-
295
- # 旧関数の互換性のため残しておく
296
- find_and_add_label() {
297
- add_matching_label "$@"
298
- }
299
-
300
- # 5. PR の更新
301
- update_pr() {
302
- local pr_number=$1
303
- local description="$2"
304
- local labels="$3"
305
-
306
- if [ "$DRY_RUN" = "true" ]; then
307
- echo "=== DRY RUN ==="
308
- echo "Description:"
309
- echo "$description"
310
- echo "Labels: $labels"
311
- else
312
- # リポジトリ情報を取得
313
- local repo_info=$(gh repo view --json owner,name)
314
- local owner=$(echo "$repo_info" | jq -r .owner.login)
315
- local repo=$(echo "$repo_info" | jq -r .name)
316
-
317
- # GitHub API を使用して本文を更新(HTML コメント保持)
318
- # JSON エスケープを適切に処理
319
- local escaped_body=$(echo "$description" | jq -R -s .)
320
- gh api \
321
- --method PATCH \
322
- "/repos/$owner/$repo/pulls/$pr_number" \
323
- --field body="$description"
324
-
325
- # ラベルは通常の gh コマンドで問題なし
326
- if [ -n "$labels" ]; then
327
- gh pr edit $pr_number --add-label "$labels"
328
- fi
329
- fi
330
- }
331
- ```
332
-
333
- ## 設定ファイル(今後の拡張用)
334
-
335
- `~/.claude/pr-auto-update.config`:
336
-
337
- ```json
338
- {
339
- "language": "ja",
340
- "max_labels": 3
341
- }
342
- ```
343
-
344
- ## よくあるパターン
345
-
346
- ### Flutter プロジェクト
347
-
348
- ```markdown
349
- ## What does this change?
350
-
351
- {機能名}を実装しました。ユーザーの{課題}を解決します。
352
-
353
- ### 主な変更内容
354
-
355
- - **UI 実装**: {画面名}を新規作成
356
- - **状態管理**: Riverpod プロバイダーを追加
357
- - **API 統合**: GraphQL クエリ・ミューテーションを実装
358
- - **テスト**: ウィジェットテスト・ユニットテストを追加
359
-
360
- ### 技術仕様
361
-
362
- - **アーキテクチャ**: {使用パターン}
363
- - **依存関係**: {新規追加したパッケージ}
364
- - **パフォーマンス**: {最適化内容}
365
- ```
366
-
367
- ### Node.js プロジェクト
368
-
369
- ```markdown
370
- ## What does this change?
371
-
372
- {API 名}エンドポイントを実装しました。{ユースケース}に対応します。
373
-
374
- ### 主な変更内容
375
-
376
- - **API 実装**: {エンドポイント}を新規作成
377
- - **バリデーション**: リクエスト検証ロジックを追加
378
- - **データベース**: {テーブル名}への操作を実装
379
- - **テスト**: 統合テスト・ユニットテストを追加
380
-
381
- ### セキュリティ
382
-
383
- - **認証**: JWT トークン検証
384
- - **認可**: ロールベースアクセス制御
385
- - **入力検証**: SQL インジェクション対策
386
- ```
387
-
388
- ### CI/CD 改善
389
-
390
- ```markdown
391
- ## What does this change?
392
-
393
- GitHub Actions ワークフローを改善しました。{効果}を実現します。
394
-
395
- ### 改善内容
396
-
397
- - **パフォーマンス**: ビルド時間を{時間}短縮
398
- - **信頼性**: エラーハンドリングを強化
399
- - **セキュリティ**: シークレット管理を改善
400
-
401
- ### 技術詳細
402
-
403
- - **並列化**: {ジョブ名}を並列実行
404
- - **キャッシュ**: {キャッシュ対象}のキャッシュ戦略を最適化
405
- - **モニタリング**: {メトリクス}の監視を追加
406
- ```
407
-
408
- ## 注意事項
409
-
410
- 1. **既存内容の完全保持**:
411
- - 既に記述されている内容は**一文字も変更しない**
412
- - 空のコメント部分とプレースホルダーのみ補完
413
- - ユーザーが意図的に書いた内容を尊重
414
-
415
- 2. **テンプレート優先順位**:
416
- - 既存の PR 説明 > `.github/PULL_REQUEST_TEMPLATE.md` > デフォルト
417
- - プロジェクト固有のテンプレート構造を完全踏襲
418
-
419
- 3. **ラベル制約**:
420
- - `.github/labels.yml` が存在すれば優先使用
421
- - 存在しない場合は GitHub API から既存ラベルを取得
422
- - 新しいラベルの作成は禁止
423
- - 最大 3 個まで自動選択
424
-
425
- 4. **安全な更新**:
426
- - `--dry-run` で事前確認を推奨
427
- - 機密情報を含む変更の場合は警告表示
428
- - バックアップとして元の説明を保存
429
-
430
- 5. **一貫性の維持**:
431
- - プロジェクトの既存 PR スタイルに合わせる
432
- - 言語(日本語/英語)の統一
433
- - ラベリング規則の継承
434
-
435
- ## トラブルシューティング
436
-
437
- ### よくある問題
438
-
439
- 1. **PR が見つからない**: ブランチ名と PR の関連付けを確認
440
- 2. **権限エラー**: GitHub CLI の認証状態を確認
441
- 3. **ラベルが設定できない**: リポジトリの権限を確認
442
- 4. **HTML コメントがエスケープされる**: GitHub CLI の仕様により `<!-- -->` が `&lt;!-- --&gt;` に変換される
443
-
444
- ### GitHub CLI の HTML コメントエスケープ問題
445
-
446
- **重要**: GitHub CLI (`gh pr edit`) は HTML コメントを自動エスケープします。また、シェルのリダイレクト処理で `EOF < /dev/null` などの不正な文字列が混入する場合があります。
447
-
448
- #### 根本的解決策
449
-
450
- 1. **GitHub API の --field オプション使用**: `--field` を使用して適切なエスケープ処理
451
- 2. **シェル処理の簡素化**: 複雑なリダイレクトやパイプ処理を避ける
452
- 3. **テンプレート処理の単純化**: HTML コメント除去処理を廃止し、完全保持
453
- 4. **JSON エスケープの適切な処理**: 特殊文字を正しく処理
454
-
455
- ### デバッグオプション
456
-
457
- ```bash
458
- # 詳細ログ出力(実装時に追加)
459
- /pr-auto-update --verbose
460
- ```
@@ -1,249 +0,0 @@
1
- ## PR Create
2
-
3
- Git 変更分析に基づく自動 PR 作成で効率的な Pull Request ワークフローを実現します。
4
-
5
- ### 使い方
6
-
7
- ```bash
8
- # 変更分析による自動 PR 作成
9
- git add . && git commit -m "feat: ユーザー認証機能の実装"
10
- 「変更内容を分析して適切な説明文とラベルで Draft PR を作成してください」
11
-
12
- # 既存テンプレート保持での更新
13
- cp .github/PULL_REQUEST_TEMPLATE.md pr_body.md
14
- 「テンプレート構造を完全に保持して変更内容を補完してください」
15
-
16
- # 段階的品質向上
17
- gh pr ready
18
- 「品質確認完了後、Ready for Review に変更してください」
19
- ```
20
-
21
- ### 基本例
22
-
23
- ```bash
24
- # 1. ブランチ作成とコミット
25
- git checkout main && git pull
26
- git checkout -b feat-user-profile
27
- git add . && git commit -m "feat: ユーザー プロフィール機能の実装"
28
- git push -u origin feat-user-profile
29
-
30
- # 2. PR 作成
31
- 「以下の手順で PR を作成してください:
32
- 1. git diff --cached で変更内容を確認
33
- 2. .github/PULL_REQUEST_TEMPLATE.md を使用して説明文を作成
34
- 3. 変更内容から適切なラベルを最大 3 個選択
35
- 4. Draft PR として作成(HTML コメント保持)」
36
-
37
- # 3. CI 確認後に Ready 化
38
- 「CI が通ったら PR を Ready for Review に変更してください」
39
- ```
40
-
41
- ### 実行手順
42
-
43
- #### 1. ブランチ作成
44
-
45
- ```bash
46
- # ガイドラインに従った命名規則: {type}-{subject}
47
- git checkout main
48
- git pull
49
- git checkout -b feat-user-authentication
50
-
51
- # ブランチ確認(現在のブランチ名を表示)
52
- git branch --show-current
53
- ```
54
-
55
- #### 2. コミット
56
-
57
- ```bash
58
- # 変更をステージング
59
- git add .
60
-
61
- # ガイドラインに従ったコミットメッセージ
62
- git commit -m "feat: ユーザー認証 API の実装"
63
- ```
64
-
65
- #### 3. リモートに Push
66
-
67
- ```bash
68
- # 初回 Push(upstream 設定)
69
- git push -u origin feat-user-authentication
70
-
71
- # 2 回目以降
72
- git push
73
- ```
74
-
75
- #### 4. 自動分析による Draft PR 作成
76
-
77
- **Step 1: 変更内容の分析**
78
-
79
- ```bash
80
- # ファイル変更の取得(ステージ済み変更を確認)
81
- git diff --cached --name-only
82
-
83
- # 内容分析(最大 1000 行)
84
- git diff --cached | head -1000
85
- ```
86
-
87
- **Step 2: 説明文の自動生成**
88
-
89
- ```bash
90
- # テンプレート処理の優先順位
91
- # 1. 既存 PR 説明(完全保持)
92
- # 2. .github/PULL_REQUEST_TEMPLATE.md
93
- # 3. デフォルトテンプレート
94
-
95
- cp .github/PULL_REQUEST_TEMPLATE.md pr_body.md
96
- # HTML コメント・区切り線を保持したまま空セクションのみ補完
97
- ```
98
-
99
- **Step 3: ラベルの自動選択**
100
-
101
- ```bash
102
- # 利用可能ラベルの取得(非インタラクティブ)
103
- 「.github/labels.yml または GitHub リポジトリから利用可能なラベルを取得して、変更内容に基づいて適切なラベルを自動選択してください」
104
-
105
- # パターンマッチングによる自動選択(最大 3 個)
106
- # - ドキュメント: *.md, docs/ → documentation|docs
107
- # - テスト: test, spec → test|testing
108
- # - バグ修正: fix|bug → bug|fix
109
- # - 新機能: feat|feature → feature|enhancement
110
- ```
111
-
112
- **Step 4: GitHub API での PR 作成(HTML コメント保持)**
113
-
114
- ```bash
115
- # PR 作成
116
- 「以下の情報で Draft PR を作成してください:
117
- - タイトル: コミットメッセージから自動生成
118
- - 説明文: .github/PULL_REQUEST_TEMPLATE.md を使用して適切に記入
119
- - ラベル: 変更内容から自動選択(最大 3 個)
120
- - ベースブランチ: main
121
- - HTML コメントは完全に保持」
122
- ```
123
-
124
- **方法 B: GitHub MCP(フォールバック)**
125
-
126
- ```javascript
127
- // HTML コメント保持での PR 作成
128
- mcp_github_create_pull_request({
129
- owner: 'organization',
130
- repo: 'repository',
131
- base: 'main',
132
- head: 'feat-user-authentication',
133
- title: 'feat: ユーザー認証の実装',
134
- body: prBodyContent, // HTML コメントを含む完全な内容
135
- draft: true,
136
- maintainer_can_modify: true,
137
- });
138
- ```
139
-
140
- ### 自動ラベル選択システム
141
-
142
- #### ファイルパターンベース判定
143
-
144
- - **ドキュメント**: `*.md`, `README`, `docs/` → `documentation|docs|doc`
145
- - **テスト**: `test`, `spec` → `test|testing`
146
- - **CI/CD**: `.github/`, `*.yml`, `Dockerfile` → `ci|build|infra|ops`
147
- - **依存関係**: `package.json`, `pubspec.yaml` → `dependencies|deps`
148
-
149
- #### 変更内容ベース判定
150
-
151
- - **バグ修正**: `fix|bug|error|crash|修正` → `bug|fix`
152
- - **新機能**: `feat|feature|add|implement|新機能|実装` → `feature|enhancement|feat`
153
- - **リファクタリング**: `refactor|clean|リファクタ` → `refactor|cleanup|clean`
154
- - **パフォーマンス**: `performance|perf|optimize` → `performance|perf`
155
- - **セキュリティ**: `security|secure` → `security`
156
-
157
- #### 制約事項
158
-
159
- - **最大 3 個まで**: 自動選択の上限
160
- - **既存ラベルのみ**: 新規作成禁止
161
- - **部分マッチ**: キーワード含有による判定
162
-
163
- ### プロジェクトガイドライン
164
-
165
- #### 基本姿勢
166
-
167
- 1. **必ず Draft で開始**: すべての PR は Draft 状態で作成
168
- 2. **段階的品質向上**: Phase 1(基本実装)→ Phase 2(テスト追加)→ Phase 3(ドキュメント更新)
169
- 3. **適切なラベル**: 最大 3 種類のラベルを必ず付与
170
- 4. **テンプレート使用**: `.github/PULL_REQUEST_TEMPLATE.md` を必ず使用
171
- 5. **日本語スペース**: 日本語と半角英数字間に必ず半角スペース
172
-
173
- #### ブランチ命名規則
174
-
175
- ```text
176
- {type}-{subject}
177
-
178
- 例:
179
- - feat-user-profile
180
- - fix-login-error
181
- - refactor-api-client
182
- ```
183
-
184
- #### コミットメッセージ
185
-
186
- ```text
187
- {type}: {description}
188
-
189
- 例:
190
- - feat: ユーザー認証 API の実装
191
- - fix: ログイン エラーの修正
192
- - docs: README の更新
193
- ```
194
-
195
- ### テンプレート処理システム
196
-
197
- #### 処理優先順位
198
-
199
- 1. **既存 PR 説明**: 既に記述されている内容を**完全に踏襲**
200
- 2. **プロジェクトテンプレート**: `.github/PULL_REQUEST_TEMPLATE.md` 構造を維持
201
- 3. **デフォルトテンプレート**: 上記が存在しない場合
202
-
203
- #### 既存内容保持ルール
204
-
205
- - **一文字も変更しない**: 既に記述されている内容
206
- - **空セクションのみ補完**: プレースホルダー部分を変更内容で埋める
207
- - **機能的コメント保持**: `<!-- Copilot review rule -->` などを維持
208
- - **HTML コメント保持**: `<!-- ... -->` を完全に保持
209
- - **区切り線保持**: `---` などの構造を維持
210
-
211
- #### HTML コメント保持の対処法
212
-
213
- **重要**: GitHub CLI (`gh pr edit`) は HTML コメントを自動エスケープし、シェル処理で `EOF < /dev/null` などの不正な文字列が混入する場合があります。
214
-
215
- **根本的解決策**:
216
-
217
- 1. **GitHub API の --field オプション使用**: 適切なエスケープ処理で HTML コメント保持
218
- 2. **テンプレート処理の簡素化**: 複雑なパイプ処理やリダイレクトを避ける
219
- 3. **完全保持アプローチ**: HTML コメント削除処理を廃止し、テンプレートを完全保持
220
-
221
- ### レビューコメント対応
222
-
223
- ```bash
224
- # 変更後の再コミット
225
- git add .
226
- git commit -m "fix: レビュー フィードバックに基づく修正"
227
- git push
228
- ```
229
-
230
- ### 注意事項
231
-
232
- #### HTML コメント保持の重要性
233
-
234
- - **GitHub CLI 制限**: `gh pr edit` は HTML コメントをエスケープ、不正文字列混入
235
- - **根本的回避策**: GitHub API の `--field` オプションで適切なエスケープ処理
236
- - **テンプレート完全保持**: HTML コメント削除処理を廃止し、構造を完全維持
237
-
238
- #### 自動化の制約
239
-
240
- - **新規ラベル禁止**: `.github/labels.yml` 定義外のラベル作成不可
241
- - **最大 3 ラベル**: 自動選択の上限
242
- - **既存内容優先**: 手動で記述された内容は一切変更しない
243
-
244
- #### 段階的品質向上
245
-
246
- - **Draft 必須**: すべての PR は Draft で開始
247
- - **CI 確認**: `gh pr checks` で状態確認
248
- - **Ready 移行**: 品質確認完了後に `gh pr ready`
249
- - **テンプレート完全遵守**: プロジェクト固有の構造を維持