fix-bug
バグ修正統合スキル(原因調査→修正→テスト→レビュー→QA→PR作成の全工程自動化)
Best use case
fix-bug is best used when you need a repeatable AI agent workflow instead of a one-off prompt. It is especially useful for teams working in multi. バグ修正統合スキル(原因調査→修正→テスト→レビュー→QA→PR作成の全工程自動化)
バグ修正統合スキル(原因調査→修正→テスト→レビュー→QA→PR作成の全工程自動化)
Users should expect a more consistent workflow output, faster repeated execution, and less time spent rewriting prompts from scratch.
Practical example
Example input
Use the "fix-bug" skill to help with this workflow task. Context: バグ修正統合スキル(原因調査→修正→テスト→レビュー→QA→PR作成の全工程自動化)
Example output
A structured workflow result with clearer steps, more consistent formatting, and an output that is easier to reuse in the next run.
When to use this skill
- Use this skill when you want a reusable workflow rather than writing the same prompt again and again.
When not to use this skill
- Do not use this when you only need a one-off answer and do not need a reusable workflow.
- Do not use it if you cannot install or maintain the related files, repository context, or supporting tools.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/fix-bug/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How fix-bug Compares
| Feature / Agent | fix-bug | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
バグ修正統合スキル(原因調査→修正→テスト→レビュー→QA→PR作成の全工程自動化)
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Fix Bug Skill - バグ修正統合スキル
## 役割
バグ修正の全工程を統合的に実行するスキルです。原因調査、修正実装、テスト追加、レビュー、品質保証、PR作成まで、完全なバグ修正フローを自動化します。
## 実行フロー
### Phase 1: 事前確認とブランチ作成
#### 1-1. パラメータ確認
- bug_description: バグの説明確認
- issue_number: Issue番号確認
- target: 修正対象確認(backend/frontend/both)
- suspected_files: 問題が疑われるファイル確認(オプション)
#### 1-2. ブランチ管理
```bash
# 現在のブランチを確認
git branch --show-current
# mainブランチの場合は新しいブランチを作成
# ブランチ名: fix/[bug-description-summary]-[issue_number]
# 例: fix/login-session-error-456
# mainブランチでないことを確認
```
### Phase 2: バグ原因調査
#### 2-1. エラーログ確認
```bash
# Backendログ確認(該当する場合)
grep -r "[bug related keywords]" backend/logs/
grep -r "ERROR" backend/logs/ | tail -50
# Frontendコンソールエラー確認(該当する場合)
# ブラウザDevToolsでエラー確認
```
#### 2-2. 関連コード検索
```bash
# suspected_filesが指定されている場合は優先的に確認
# 指定がない場合は、バグ説明から関連キーワードを抽出して検索
# Backendコード検索
grep -r "[keyword]" backend/src/main/java/
# Frontendコード検索
grep -r "[keyword]" frontend/
```
#### 2-3. 既存テスト確認
```bash
# 関連するテストケースを検索
# Backendテスト
find backend/src/test/java/ -name "*Test.java" | xargs grep -l "[keyword]"
# Frontendテスト
find frontend/ -name "*.test.ts*" | xargs grep -l "[keyword]"
```
#### 2-4. 原因分析レポート作成
```markdown
## バグ原因調査レポート
### バグ概要
- [bug_description]
### 再現手順(推測)
1. [手順1]
2. [手順2]
3. [手順3]
### 原因箇所
- **ファイル**: [ファイルパス]:[行番号]
- **問題**: [具体的な問題内容]
- **根本原因**: [なぜこのバグが発生したか]
### 影響範囲
- [影響を受ける機能や画面]
### 修正方針
- [どのように修正するか]
### テスト方針
- [どのようにテストするか]
```
### Phase 3: バグ修正実装
#### 3-1. Backend修正(target が "backend" または "both" の場合)
**最小限の変更で修正**:
1. 原因箇所を特定
2. 必要最小限のコード変更
3. 既存の動作を壊さないように注意
4. エラーハンドリング追加(必要に応じて)
**修正例(NullPointerException)**:
```java
// Before: バグあり
public User getUser(UUID userId) {
User user = userMapper.selectById(userId);
return user; // userがnullの場合、後続処理でNPE発生
}
// After: 修正後
public User getUser(UUID userId) {
User user = userMapper.selectById(userId);
if (user == null) {
throw new UserNotFoundException("User not found: " + userId);
}
return user;
}
```
**修正後のチェック**:
- [ ] コンパイルエラーなし
- [ ] Lintエラーなし
- [ ] 既存テストが通る
- [ ] 修正箇所のテストを追加
#### 3-2. Frontend修正(target が "frontend" または "both" の場合)
**最小限の変更で修正**:
1. 原因箇所を特定
2. 必要最小限のコード変更
3. 既存の動作を壊さないように注意
4. エラーハンドリング追加(必要に応じて)
**修正例(useEffectのメモリリーク)**:
```typescript
// Before: バグあり
useEffect(() => {
fetchData().then(data => setData(data));
}, []);
// コンポーネントアンマウント後にsetDataが呼ばれる可能性
// After: 修正後
useEffect(() => {
let cancelled = false;
fetchData().then(data => {
if (!cancelled) {
setData(data);
}
});
return () => {
cancelled = true;
};
}, []);
```
**修正後のチェック**:
- [ ] TypeScriptエラーなし
- [ ] Lintエラーなし
- [ ] 既存テストが通る
- [ ] 修正箇所のテストを追加
### Phase 4: テスト追加(test-backend/test-frontend)
#### 4-1. Backend テスト追加(Backend修正時)
```
/test-backend target_class="[修正したクラスの完全修飾名]" test_type="unit" coverage_target=90
```
**バグ再現テストの追加**:
```java
@Test
void バグ再現_ユーザーIDがnullの場合は例外を投げる() {
// given
UUID userId = null;
// when & then
assertThatThrownBy(() -> userService.getUser(userId))
.isInstanceOf(IllegalArgumentException.class)
.hasMessageContaining("User ID must not be null");
}
@Test
void バグ再現_存在しないユーザーIDの場合は例外を投げる() {
// given
UUID userId = UUID.randomUUID();
when(userMapper.selectById(userId)).thenReturn(null);
// when & then
assertThatThrownBy(() -> userService.getUser(userId))
.isInstanceOf(UserNotFoundException.class)
.hasMessageContaining("User not found");
}
```
#### 4-2. Frontend テスト追加(Frontend修正時)
```
/test-frontend target_file="[修正したファイルのパス]" test_type="component" coverage_target=90
```
**バグ再現テストの追加**:
```typescript
it('バグ再現: コンポーネントアンマウント後にAPIレスポンスが返ってきてもエラーにならない', async () => {
const { unmount } = render(<UserProfile userId="123" />);
// コンポーネントを即座にアンマウント
unmount();
// APIレスポンスを待つ
await waitFor(() => {
// エラーが発生しないことを確認
expect(console.error).not.toHaveBeenCalled();
});
});
```
### Phase 5: サーバー起動による動作確認
#### 5-1. Backend修正の場合
```bash
cd backend
./gradlew bootRun
```
**確認事項**:
- [ ] サーバーが正常に起動すること
- [ ] 修正した機能が正常に動作すること
- [ ] エラーログが出力されていないこと
- [ ] バグが再現しないことを確認
#### 5-2. Frontend修正の場合
```bash
cd frontend
pnpm dev
```
**確認事項**:
- [ ] サーバーが正常に起動すること
- [ ] 修正した画面/コンポーネントが正常に動作すること
- [ ] コンソールエラーが出力されていないこと
- [ ] バグが再現しないことを確認
### Phase 6: アーキテクチャレビュー(review-architecture)
```
/review-architecture target="[target]"
```
**実行内容**:
- コーディング規約準拠確認
- 修正内容の妥当性確認
- 副作用がないか確認
**判定**:
- ✅ 合格 → Phase 7へ
- ❌ 不合格 → Phase 3へ戻って修正
### Phase 7: 品質保証(qa-check)
```
/qa-check target="[target]"
```
**実行内容**:
- Lintチェック
- 既存テスト + 新規テストの実行
- ビルド検証
- カバレッジ確認
**判定**:
- ✅ 合格 → Phase 8へ
- ❌ 不合格 → Phase 3へ戻って修正
### Phase 8: PR作成(create-pr)
```
/create-pr issue_number=[issue_number]
```
**PR説明文に含める内容**:
- バグの概要
- 原因
- 修正内容
- テスト追加内容
- 確認事項
### Phase 9: 完了報告
```markdown
## Fix Bug 完了報告
### バグ概要
- [bug_description]
### Issue番号
- #[issue_number]
### PR URL
- [PR URL]
### 原因
- **ファイル**: [ファイルパス]:[行番号]
- **問題**: [具体的な問題内容]
- **根本原因**: [なぜこのバグが発生したか]
### 修正内容
- [具体的な修正内容]
### 影響範囲
- [影響を受ける機能や画面]
### テスト追加
- バグ再現テスト: [テストケース数] ケース
- 境界値テスト: [テストケース数] ケース
- 既存テスト: すべて成功
### 品質保証結果
- ✅ アーキテクチャレビュー: 合格
- ✅ QAチェック: 合格
- ✅ テストカバレッジ: [数値]%
- ✅ Lint/ビルド: 成功
- ✅ サーバー起動・動作確認: 完了
- ✅ バグ再現しないことを確認: 完了
### 次のステップ
Pull Requestのレビューを依頼してください。
```
## エラーハンドリング
### 原因特定できない場合
1. より広範囲にコード検索
2. 関連するログをすべて確認
3. 類似のバグ報告を検索
4. ユーザーに追加情報を依頼
### 修正が複雑になる場合
1. 修正方針を再検討
2. より小さな単位に分割
3. リファクタリングが必要か判断
4. ユーザーに相談
### テストが通らない場合
1. 修正内容を見直し
2. テストの期待値を確認
3. 副作用がないか確認
4. 修正を調整
## 重要な注意事項
### 最小限の変更
- バグ修正は必要最小限の変更に留める
- 関係ない箇所はリファクタリングしない
- 既存の動作を壊さない
### テストの追加必須
- バグ再現テストを必ず追加
- 同様のバグが再発しないようにする
- 境界値・異常系のテストも追加
### ドキュメント更新
- 新規エラーコードを追加した場合は error-codes.md に追記
- DB変更した場合は database-design.md を更新
## 使用するスキル一覧
1. **test-backend**: バックエンドテスト追加(Backend修正時)
2. **test-frontend**: フロントエンドテスト追加(Frontend修正時)
3. **review-architecture**: アーキテクチャレビュー
4. **qa-check**: 品質保証
5. **create-pr**: PR作成
## 参照ドキュメント
### 必須参照
- `documents/development/development-policy.md`: 開発ガイドライン
- `documents/development/coding-rules/`: コーディング規約
- `documents/development/error-codes.md`: エラーコード一覧
### バグ調査に役立つドキュメント
- `documents/architecture/database-design.md`: データベース設計
- `documents/architecture/system-architecture.md`: システムアーキテクチャ
- `documents/features/[機能名]/specification.md`: 機能仕様書Related Skills
azure-quotas
Check/manage Azure quotas and usage across providers. For deployment planning, capacity validation, region selection. WHEN: "check quotas", "service limits", "current usage", "request quota increase", "quota exceeded", "validate capacity", "regional availability", "provisioning limits", "vCPU limit", "how many vCPUs available in my subscription".
raindrop-io
Manage Raindrop.io bookmarks with AI assistance. Save and organize bookmarks, search your collection, manage reading lists, and organize research materials. Use when working with bookmarks, web research, reading lists, or when user mentions Raindrop.io.
zlibrary-to-notebooklm
自动从 Z-Library 下载书籍并上传到 Google NotebookLM。支持 PDF/EPUB 格式,自动转换,一键创建知识库。
discover-skills
当你发现当前可用的技能都不够合适(或用户明确要求你寻找技能)时使用。本技能会基于任务目标和约束,给出一份精简的候选技能清单,帮助你选出最适配当前任务的技能。
web-performance-seo
Fix PageSpeed Insights/Lighthouse accessibility "!" errors caused by contrast audit failures (CSS filters, OKLCH/OKLAB, low opacity, gradient text, image backgrounds). Use for accessibility-driven SEO/performance debugging and remediation.
project-to-obsidian
将代码项目转换为 Obsidian 知识库。当用户提到 obsidian、项目文档、知识库、分析项目、转换项目 时激活。 【激活后必须执行】: 1. 先完整阅读本 SKILL.md 文件 2. 理解 AI 写入规则(默认到 00_Inbox/AI/、追加式、统一 Schema) 3. 执行 STEP 0: 使用 AskUserQuestion 询问用户确认 4. 用户确认后才开始 STEP 1 项目扫描 5. 严格按 STEP 0 → 1 → 2 → 3 → 4 顺序执行 【禁止行为】: - 禁止不读 SKILL.md 就开始分析项目 - 禁止跳过 STEP 0 用户确认 - 禁止直接在 30_Resources 创建(先到 00_Inbox/AI/) - 禁止自作主张决定输出位置
obsidian-helper
Obsidian 智能笔记助手。当用户提到 obsidian、日记、笔记、知识库、capture、review 时激活。 【激活后必须执行】: 1. 先完整阅读本 SKILL.md 文件 2. 理解 AI 写入三条硬规矩(00_Inbox/AI/、追加式、白名单字段) 3. 按 STEP 0 → STEP 1 → ... 顺序执行 4. 不要跳过任何步骤,不要自作主张 【禁止行为】: - 禁止不读 SKILL.md 就开始工作 - 禁止跳过用户确认步骤 - 禁止在非 00_Inbox/AI/ 位置创建新笔记(除非用户明确指定)
internationalizing-websites
Adds multi-language support to Next.js websites with proper SEO configuration including hreflang tags, localized sitemaps, and language-specific content. Use when adding new languages, setting up i18n, optimizing for international SEO, or when user mentions localization, translation, multi-language, or specific languages like Japanese, Korean, Chinese.
google-official-seo-guide
Official Google SEO guide covering search optimization, best practices, Search Console, crawling, indexing, and improving website search visibility based on official Google documentation
github-release-assistant
Generate bilingual GitHub release documentation (README.md + README.zh.md) from repo metadata and user input, and guide release prep with git add/commit/push. Use when the user asks to write or polish README files, create bilingual docs, prepare a GitHub release, or mentions release assistant/README generation.
doc-sync-tool
自动同步项目中的 Agents.md、claude.md 和 gemini.md 文件,保持内容一致性。支持自动监听和手动触发。
deploying-to-production
Automate creating a GitHub repository and deploying a web project to Vercel. Use when the user asks to deploy a website/app to production, publish a project, or set up GitHub + Vercel deployment.