@k2works/claude-code-booster 0.8.0 → 0.9.0
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.
- package/lib/assets/.claude/README.md +54 -136
- package/lib/assets/.claude/assets/.gitkeep +0 -0
- package/lib/assets/.claude/commands/git-commit.md +47 -0
- package/lib/assets/.claude/commands/ops.md +16 -16
- package/lib/assets/.claude/scripts/.gitkeep +0 -0
- package/lib/assets/README.md +76 -2
- package/lib/assets/apps/.gitkeep +0 -0
- package/package.json +1 -1
- package/lib/assets/.claude/agents/roles/analyzer.md +0 -267
- package/lib/assets/.claude/agents/roles/architect.md +0 -233
- package/lib/assets/.claude/agents/roles/backend.md +0 -303
- package/lib/assets/.claude/agents/roles/frontend.md +0 -294
- package/lib/assets/.claude/agents/roles/mobile.md +0 -309
- package/lib/assets/.claude/agents/roles/performance.md +0 -254
- package/lib/assets/.claude/agents/roles/qa.md +0 -266
- package/lib/assets/.claude/agents/roles/reviewer.md +0 -252
- package/lib/assets/.claude/agents/roles/security.md +0 -392
- package/lib/assets/.claude/assets/confirm.mp3 +0 -0
- package/lib/assets/.claude/assets/perfect.mp3 +0 -0
- package/lib/assets/.claude/assets/silent.wav +0 -0
- package/lib/assets/.claude/commands/analyze-dependencies.md +0 -158
- package/lib/assets/.claude/commands/analyze-performance.md +0 -116
- package/lib/assets/.claude/commands/check-fact.md +0 -104
- package/lib/assets/.claude/commands/check-github-ci.md +0 -53
- package/lib/assets/.claude/commands/check-prompt.md +0 -461
- package/lib/assets/.claude/commands/commit-message.md +0 -348
- package/lib/assets/.claude/commands/context7.md +0 -50
- package/lib/assets/.claude/commands/design-patterns.md +0 -186
- package/lib/assets/.claude/commands/explain-code.md +0 -75
- package/lib/assets/.claude/commands/fix-error.md +0 -258
- package/lib/assets/.claude/commands/multi-role.md +0 -291
- package/lib/assets/.claude/commands/next.md +0 -136
- package/lib/assets/.claude/commands/pr-auto-update.md +0 -460
- package/lib/assets/.claude/commands/pr-create.md +0 -249
- package/lib/assets/.claude/commands/pr-feedback.md +0 -143
- package/lib/assets/.claude/commands/pr-issue.md +0 -78
- package/lib/assets/.claude/commands/pr-list.md +0 -66
- package/lib/assets/.claude/commands/pr-review.md +0 -142
- package/lib/assets/.claude/commands/refactor.md +0 -147
- package/lib/assets/.claude/commands/role-debate.md +0 -571
- package/lib/assets/.claude/commands/role-help.md +0 -276
- package/lib/assets/.claude/commands/role.md +0 -360
- package/lib/assets/.claude/commands/screenshot.md +0 -103
- package/lib/assets/.claude/commands/search-gemini.md +0 -66
- package/lib/assets/.claude/commands/semantic-commit.md +0 -1129
- package/lib/assets/.claude/commands/sequential-thinking.md +0 -90
- package/lib/assets/.claude/commands/show-plan.md +0 -59
- package/lib/assets/.claude/commands/smart-review.md +0 -174
- package/lib/assets/.claude/commands/spec.md +0 -559
- package/lib/assets/.claude/commands/style-ai-writing.md +0 -186
- package/lib/assets/.claude/commands/task.md +0 -223
- package/lib/assets/.claude/commands/tech-debt.md +0 -87
- package/lib/assets/.claude/commands/ultrathink.md +0 -65
- package/lib/assets/.claude/commands/update-dart-doc.md +0 -202
- package/lib/assets/.claude/commands/update-doc-string.md +0 -306
- package/lib/assets/.claude/commands/update-flutter-deps.md +0 -105
- package/lib/assets/.claude/commands/update-node-deps.md +0 -105
- package/lib/assets/.claude/commands/update-rust-deps.md +0 -107
- package/lib/assets/.claude/scripts/auto-comment.sh +0 -16
- package/lib/assets/.claude/scripts/check-ai-commit.sh +0 -20
- package/lib/assets/.claude/scripts/check-continue.sh +0 -97
- package/lib/assets/.claude/scripts/check-locales.sh +0 -1080
- package/lib/assets/.claude/scripts/check-project-plan.sh +0 -25
- package/lib/assets/.claude/scripts/debug-hook.sh +0 -7
- package/lib/assets/.claude/scripts/deny-check.sh +0 -69
- package/lib/assets/.claude/scripts/install.sh +0 -174
- package/lib/assets/.claude/scripts/ja-space-exclusions.json +0 -18
- package/lib/assets/.claude/scripts/ja-space-format.sh +0 -45
- package/lib/assets/.claude/scripts/preserve-file-permissions.sh +0 -83
- package/lib/assets/.claude/scripts/statusline.sh +0 -153
- /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 の仕様により `<!-- -->` が `<!-- -->` に変換される
|
|
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
|
-
- **テンプレート完全遵守**: プロジェクト固有の構造を維持
|