mirror of
https://github.com/luongnv89/claude-howto.git
synced 2026-07-02 23:15:41 +02:00
feat(i18n): Add Japanese (ja/) translation (#105)
- Translate all 101 markdown files: P1 core, all 10 modules, examples, auxiliary docs (CONTRIBUTING, CODE_OF_CONDUCT, SECURITY, CLAUDE.md, etc.), peripheral docs (.github/, docs/, resources/, scripts/) - Translate comments and user-facing messages in 06-hooks/*.sh examples - Copy 05-mcp/*.json examples (standard JSON, no comments) - Update root README.md language switcher to include 日本語 - Add ja/TRANSLATION_NOTES.md (glossary + style guide) All translations pass pre-commit quality gates (markdown-lint, cross-references, mermaid-syntax, link-check, build-epub).
This commit is contained in:
@@ -142,3 +142,44 @@ repos:
|
||||
entry: uv run scripts/build_epub.py --lang vi
|
||||
pass_filenames: false
|
||||
files: ^(vi/.*\.md|scripts/build_epub\.py)$
|
||||
|
||||
# Japanese documentation checks
|
||||
- repo: local
|
||||
hooks:
|
||||
- id: japanese-markdown-lint
|
||||
name: japanese-markdown-lint
|
||||
language: node
|
||||
entry: markdownlint
|
||||
args: ['--ignore', 'node_modules', '--ignore', '.venv', '--config', '.markdownlint.json']
|
||||
files: ^ja/.*\.md$
|
||||
additional_dependencies: ['markdownlint-cli']
|
||||
|
||||
- id: japanese-cross-references
|
||||
name: japanese-cross-references
|
||||
language: system
|
||||
entry: python scripts/check_cross_references.py
|
||||
pass_filenames: false
|
||||
files: ^ja/.*\.md$
|
||||
|
||||
- id: japanese-mermaid
|
||||
name: japanese-mermaid-syntax
|
||||
language: system
|
||||
entry: python scripts/check_mermaid.py
|
||||
pass_filenames: false
|
||||
files: ^ja/.*\.md$
|
||||
verbose: true
|
||||
|
||||
- id: japanese-link-check
|
||||
name: japanese-link-check
|
||||
language: system
|
||||
entry: python scripts/check_links.py
|
||||
pass_filenames: false
|
||||
files: ^ja/.*\.md$
|
||||
verbose: true
|
||||
|
||||
- id: japanese-build-epub
|
||||
name: japanese-build-epub
|
||||
language: system
|
||||
entry: uv run scripts/build_epub.py --lang ja
|
||||
pass_filenames: false
|
||||
files: ^(ja/.*\.md|scripts/build_epub\.py)$
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
[](CHANGELOG.md)
|
||||
[](https://code.claude.com)
|
||||
|
||||
🌐 **Language / Ngôn ngữ / 语言 / Мова:** [English](README.md) | [Tiếng Việt](vi/README.md) | [中文](zh/README.md) | [Українська](uk/README.md)
|
||||
🌐 **Language / Ngôn ngữ / 语言 / Мова:** [English](README.md) | [Tiếng Việt](vi/README.md) | [中文](zh/README.md) | [Українська](uk/README.md) | [日本語](ja/README.md)
|
||||
|
||||
# Master Claude Code in a Weekend
|
||||
|
||||
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
<!-- i18n-source: .github/ISSUE_TEMPLATE/bug_report.md -->
|
||||
<!-- i18n-source-sha: 5fd984a -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
---
|
||||
name: Bug Report
|
||||
about: サンプル、ガイド、ドキュメントの問題を報告する
|
||||
title: "[BUG] "
|
||||
labels: bug
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
## 概要
|
||||
問題の簡単な説明。
|
||||
|
||||
## 再現手順
|
||||
1. 手順 1
|
||||
2. 手順 2
|
||||
3. 手順 3
|
||||
|
||||
## 期待する動作
|
||||
本来どうなるべきか。
|
||||
|
||||
## 実際の動作
|
||||
実際にはどうなったか。
|
||||
|
||||
## 環境
|
||||
- **Claude Code バージョン**: (例: 1.0.5)
|
||||
- **OS**: (例: macOS 14.1、Ubuntu 22.04、Windows 11)
|
||||
- **Python バージョン**: (関連する場合、例: 3.11)
|
||||
- **対象コンポーネント**: (例: 01-slash-commands、03-skills など)
|
||||
|
||||
## サンプルコード
|
||||
該当する場合、動作しないサンプルコードを記載してほしい。
|
||||
```
|
||||
[ここにコードを挿入]
|
||||
```
|
||||
|
||||
## スクリーンショット
|
||||
該当する場合、問題を示すスクリーンショットを添付してほしい。
|
||||
|
||||
## 補足情報
|
||||
問題の理解に役立つその他の情報があれば。
|
||||
|
||||
## 解決案
|
||||
修正方法の案があれば共有してほしい。
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
<!-- i18n-source: .github/ISSUE_TEMPLATE/documentation.md -->
|
||||
<!-- i18n-source-sha: 59a87f1 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
---
|
||||
name: Documentation Issue
|
||||
about: 不明瞭なドキュメント、誤字、情報の欠落を報告する
|
||||
title: "[DOCS] "
|
||||
labels: documentation
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
## 問題の種類
|
||||
- [ ] 誤字または文法ミス
|
||||
- [ ] 説明が不明瞭
|
||||
- [ ] 情報の欠落
|
||||
- [ ] リンク切れまたは参照切れ
|
||||
- [ ] 内容が古い
|
||||
- [ ] より良い例が必要
|
||||
|
||||
## 場所
|
||||
どのセクションに問題があるか。
|
||||
- **ファイル**: (例: README.md、03-skills/README.md)
|
||||
- **セクション**: (例: 「Installation Quick Reference」)
|
||||
- **行・領域**: (特定できる場合)
|
||||
|
||||
## 現在の内容
|
||||
現状はどう書かれているか。
|
||||
```
|
||||
[現在の文章をここに貼り付け]
|
||||
```
|
||||
|
||||
## 問題の説明
|
||||
何が問題か。
|
||||
|
||||
## 改善案
|
||||
どう改善・明確化できるか。
|
||||
```
|
||||
[改善後の文章や提案をここに記載]
|
||||
```
|
||||
|
||||
## なぜ重要か
|
||||
この問題がユーザーにどう影響するか。
|
||||
|
||||
## 関連ドキュメント
|
||||
関連セクションへのリンク。
|
||||
- 関連ガイド: <!-- ここにリンクを追加 -->
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
<!-- i18n-source: .github/ISSUE_TEMPLATE/feature_request.md -->
|
||||
<!-- i18n-source-sha: 59a87f1 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
---
|
||||
name: Feature Request
|
||||
about: 新しいサンプル、ガイド、改善案を提案する
|
||||
title: "[FEATURE] "
|
||||
labels: enhancement
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
## 概要
|
||||
追加してほしい機能や改善内容を記述する。
|
||||
|
||||
## 解決する課題
|
||||
どのような課題やギャップに対応するか。
|
||||
|
||||
例:
|
||||
- X 機能のサンプルがない
|
||||
- Y のドキュメントが不明瞭
|
||||
- Z のユースケースのガイドが必要
|
||||
- 構造を以下のように改善できる…
|
||||
|
||||
## ユースケース
|
||||
いつ・どのように使うか。実際のシナリオを含める。
|
||||
|
||||
## 解決案
|
||||
どのように実装・ドキュメント化すべきか。
|
||||
|
||||
## 例
|
||||
該当する場合、想定する例を記載してほしい。
|
||||
```
|
||||
[ここに例を挿入]
|
||||
```
|
||||
|
||||
## 関連サンプル
|
||||
既存の関連サンプルやガイドへのリンク。
|
||||
- 既存ガイド: <!-- ここにリンクを追加 -->
|
||||
- 機能: (例: Skills、Hooks、Subagents)
|
||||
|
||||
## 補足情報
|
||||
他に役立つ情報があれば。
|
||||
|
||||
## 受け入れ基準
|
||||
この機能が完成したと判断する基準は何か。
|
||||
- [ ] 基準 1
|
||||
- [ ] 基準 2
|
||||
- [ ] 基準 3
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
<!-- i18n-source: .github/ISSUE_TEMPLATE/question.md -->
|
||||
<!-- i18n-source-sha: 5fd984a -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
---
|
||||
name: Question
|
||||
about: Claude Code または本ガイドに関する質問をする
|
||||
title: "[QUESTION] "
|
||||
labels: question
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
## 質問
|
||||
何を知りたいか。
|
||||
|
||||
## 背景
|
||||
質問の背景・文脈を記載してほしい。
|
||||
- 何を実現しようとしているか
|
||||
- すでに何を試したか
|
||||
- どのサンプル・ガイドを参照したか
|
||||
|
||||
## 関連トピック
|
||||
どのトピックに関する質問か。
|
||||
- [ ] スラッシュコマンド
|
||||
- [ ] メモリ
|
||||
- [ ] スキル
|
||||
- [ ] サブエージェント
|
||||
- [ ] MCP プロトコル
|
||||
- [ ] フック
|
||||
- [ ] プラグイン
|
||||
- [ ] チェックポイント
|
||||
- [ ] 高度な機能
|
||||
- [ ] CLI リファレンス
|
||||
- [ ] その他
|
||||
|
||||
## 試したこと
|
||||
すでに試したことがあれば、その結果を記載してほしい。
|
||||
|
||||
## 期待する成果
|
||||
何があれば解決に役立つか。
|
||||
|
||||
## 関連リソース
|
||||
関連しそうなリンクやリソースがあれば。
|
||||
Vendored
+312
@@ -0,0 +1,312 @@
|
||||
<!-- i18n-source: .github/SECURITY_REPORTING.md -->
|
||||
<!-- i18n-source-sha: 6d1e0ae -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
# セキュリティ脆弱性の報告
|
||||
|
||||
このファイルは、Claude How To プロジェクトに対するセキュリティ脆弱性の報告方法を説明する。
|
||||
|
||||
## クイックリンク
|
||||
|
||||
- **非公開報告**: https://github.com/luongnv89/claude-howto/security/advisories
|
||||
- **セキュリティポリシー**: [SECURITY.md](../SECURITY.md)
|
||||
- **報告テンプレート**: 下記参照
|
||||
|
||||
## 脆弱性を報告する
|
||||
|
||||
### 方法 1: GitHub の Private Vulnerability Report(推奨)
|
||||
|
||||
セキュリティ脆弱性を報告する優先手段。
|
||||
|
||||
**手順:**
|
||||
1. https://github.com/luongnv89/claude-howto/security/advisories を開く
|
||||
2. 「Report a vulnerability」をクリック
|
||||
3. 詳細を記入(下のテンプレートを使う)
|
||||
4. 送信
|
||||
|
||||
**利点:**
|
||||
- 修正版がリリースされるまで脆弱性を非公開に保つ
|
||||
- メンテナーへの自動通知
|
||||
- 組み込みの共同作業機能
|
||||
- GitHub セキュリティツールとの統合
|
||||
|
||||
### 方法 2: GitHub Security Alert(依存関係向け)
|
||||
|
||||
依存関係に脆弱性を発見した場合:
|
||||
|
||||
1. https://github.com/luongnv89/claude-howto/security/advisories を開く
|
||||
2. アラートを確認する
|
||||
3. 修正案のプルリクエストを作成する
|
||||
4. `security` ラベルを付ける
|
||||
|
||||
### 方法 3: 非公開メール(GitHub が利用できない場合)
|
||||
|
||||
GitHub の報告システムを使えない場合:
|
||||
|
||||
**近日対応**: ここにセキュリティ問い合わせ用メールアドレスを追加予定
|
||||
|
||||
当面は、上記の GitHub の非公開脆弱性報告を使ってほしい。
|
||||
|
||||
## 脆弱性報告テンプレート
|
||||
|
||||
脆弱性を報告するときは次のテンプレートを使う:
|
||||
|
||||
```
|
||||
**Title**: [Brief description of vulnerability]
|
||||
|
||||
**Severity**: [Critical/High/Medium/Low]
|
||||
Estimated CVSS Score: [0-10]
|
||||
|
||||
**Type**: [Code/Documentation/Dependency/Configuration]
|
||||
|
||||
**Affected Component**:
|
||||
- File: [path/to/file.py]
|
||||
- Section: [Section name if documentation]
|
||||
- Version: [latest/specific version]
|
||||
|
||||
**Description**:
|
||||
[Clear explanation of what the vulnerability is]
|
||||
|
||||
**Potential Impact**:
|
||||
[What could an attacker do with this vulnerability?]
|
||||
[Who could be affected?]
|
||||
|
||||
**Steps to Reproduce**:
|
||||
1. [First step]
|
||||
2. [Second step]
|
||||
3. [Third step]
|
||||
[Expected result vs actual result]
|
||||
|
||||
**Proof of Concept** (if available):
|
||||
[Code or steps to demonstrate the vulnerability]
|
||||
|
||||
**Suggested Fix**:
|
||||
[Your recommended solution, if you have one]
|
||||
|
||||
**Additional Context**:
|
||||
[Any other relevant information]
|
||||
|
||||
**Your Information**:
|
||||
- Name: [Your name or anonymous]
|
||||
- Email: [Your email]
|
||||
- Credit: [How you'd like to be credited, if at all]
|
||||
```
|
||||
|
||||
## 報告後の流れ
|
||||
|
||||
### タイムライン
|
||||
|
||||
1. **即時(1 時間以内)**
|
||||
- プロジェクトメンテナーに自動通知が送られる
|
||||
|
||||
2. **24 時間以内**
|
||||
- 報告内容を初期評価する
|
||||
- 受領を確認する
|
||||
- 暫定的な深刻度評価を行う
|
||||
|
||||
3. **48 時間以内**
|
||||
- セキュリティチームから詳細回答
|
||||
- 必要に応じて確認質問
|
||||
- 脆弱性が確認された場合の修正タイムライン
|
||||
|
||||
4. **1〜7 日以内**(深刻度に依存)
|
||||
- 修正の開発とテスト
|
||||
- セキュリティアドバイザリの準備
|
||||
- 修正リリースと公開アドバイザリの公表
|
||||
|
||||
### コミュニケーション
|
||||
|
||||
以下を通じて状況を共有する:
|
||||
- GitHub 非公開脆弱性ディスカッション
|
||||
- メール(提供されている場合)
|
||||
- スレッド内の更新
|
||||
|
||||
報告者は以下を行える:
|
||||
- 確認質問の投げかけ
|
||||
- 追加情報の提供
|
||||
- 修正案の提案
|
||||
- タイムライン調整の依頼
|
||||
|
||||
### 開示タイムライン
|
||||
|
||||
**緊急(CVSS 9.0〜10.0)**
|
||||
- 修正: 即時リリース(24 時間以内)
|
||||
- 開示: 同日に公開アドバイザリ
|
||||
- 通知: 報告者に 24 時間前通知
|
||||
|
||||
**重大(CVSS 7.0〜8.9)**
|
||||
- 修正: 48〜72 時間以内にリリース
|
||||
- 開示: リリース時に公開アドバイザリ
|
||||
- 通知: 報告者に 5 日前通知
|
||||
|
||||
**中程度(CVSS 4.0〜6.9)**
|
||||
- 修正: 次回の通常更新に含める
|
||||
- 開示: リリース時に公開アドバイザリ
|
||||
- 通知: タイミングを調整
|
||||
|
||||
**軽微(CVSS 0.1〜3.9)**
|
||||
- 修正: 次回の通常更新に含める
|
||||
- 開示: リリース時にアドバイザリ
|
||||
- 通知: リリース当日
|
||||
|
||||
## セキュリティ脆弱性の基準
|
||||
|
||||
### スコープ内
|
||||
|
||||
以下に関する報告を受け付ける:
|
||||
|
||||
- **コードの脆弱性**
|
||||
- インジェクション攻撃(コマンド、SQL など)
|
||||
- サンプル中のクロスサイトスクリプティング(XSS)
|
||||
- 認証・認可の不備
|
||||
- パストラバーサル脆弱性
|
||||
- 暗号関連の問題
|
||||
|
||||
- **ドキュメントのセキュリティ**
|
||||
- 露出した秘密情報や認証情報
|
||||
- 安全でないコードパターン
|
||||
- セキュリティアンチパターン
|
||||
- 誤解を招くセキュリティ主張
|
||||
|
||||
- **依存関係の脆弱性**
|
||||
- 既知の CVE が含まれる依存関係
|
||||
- サプライチェーン攻撃
|
||||
- 悪意ある依存関係
|
||||
|
||||
- **設定の問題**
|
||||
- 安全でないデフォルト
|
||||
- 欠落したセキュリティヘッダ
|
||||
- サンプル内の認証情報露出
|
||||
|
||||
### スコープ外
|
||||
|
||||
以下に関する報告は受け付けない:
|
||||
|
||||
- Claude Code 自体の脆弱性(Anthropic に連絡してほしい)
|
||||
- 外部サービスの脆弱性
|
||||
- 証拠のない理論的脆弱性
|
||||
- すでに上流プロジェクトに報告済みの問題
|
||||
- ソーシャルエンジニアリングやフィッシング
|
||||
- ユーザー教育・トレーニングの問題
|
||||
|
||||
## 責任ある開示のガイドライン
|
||||
|
||||
### するべきこと ✅
|
||||
|
||||
- 公開開示の前に **非公開で報告** する
|
||||
- ファイルパスや行番号など **具体的に** 記述する
|
||||
- 脆弱性の **証拠を提示** する
|
||||
- 修正の **時間を確保** する(協調開示)
|
||||
- 詳細が見つかったら **更新** する
|
||||
- すべてのやり取りで **プロフェッショナル** に振る舞う
|
||||
- 公表まで **機密を尊重** する
|
||||
|
||||
### してはいけないこと ❌
|
||||
|
||||
- 修正前に **公開開示しない**
|
||||
- テストの範囲を超えて **脆弱性を悪用しない**
|
||||
- 他ユーザーのデータを **改変しない**
|
||||
- 金銭や見返りを **要求しない**
|
||||
- 他者と脆弱性を **共有しない**
|
||||
- いかなる形でも **悪用しない**
|
||||
- セキュリティ以外の問題で **スパムしない**
|
||||
|
||||
## 協調的開示
|
||||
|
||||
責任ある開示を実践している:
|
||||
|
||||
1. **非公開報告**: 報告者は非公開で報告する
|
||||
2. **当方の評価**: 当方が深刻度を評価する
|
||||
3. **修正開発**: 修正を開発・テストする
|
||||
4. **事前通知**: 公開前に報告者に事前通知する
|
||||
5. **公開リリース**: 修正とアドバイザリを同時に公開する
|
||||
6. **クレジット**: 希望に応じて貢献を明記する
|
||||
|
||||
**タイムラインは深刻度により変動する**(上記セクション参照)
|
||||
|
||||
## 修正リリース後
|
||||
|
||||
### 公開アドバイザリ
|
||||
|
||||
公開セキュリティアドバイザリには以下が含まれる:
|
||||
- 脆弱性の説明
|
||||
- 影響を受けるバージョン
|
||||
- 深刻度(CVSS スコア)
|
||||
- 修復手順
|
||||
- 修正へのリンク
|
||||
- 報告者へのクレジット(許可がある場合)
|
||||
|
||||
### 報告者の認知
|
||||
|
||||
クレジットを希望する場合:
|
||||
- アドバイザリにあなたの名前・ハンドル
|
||||
- プロフィール/Web サイトへのリンク
|
||||
- リリースノートでの言及
|
||||
- Hall of Fame への追加(作成された場合)
|
||||
|
||||
### 報酬なし
|
||||
|
||||
注意:
|
||||
- 本プロジェクトはボランティア運営のオープンソース
|
||||
- 金銭的報酬は提供できない
|
||||
- 認知とクレジットは提供する
|
||||
- 貢献はコミュニティの助けになる
|
||||
|
||||
## セキュリティリサーチ
|
||||
|
||||
セキュリティリサーチを行う場合:
|
||||
|
||||
1. **許可を取る**: まずメンテナーに連絡する
|
||||
2. **スコープを定める**: 何をテストするか合意する
|
||||
3. **報告する**: このプロセスを使う
|
||||
4. **タイムラインを尊重する**: 修正の時間を確保する
|
||||
5. **責任を持って公表する**: 当方と協調する
|
||||
|
||||
## 質問
|
||||
|
||||
このプロセスに関する質問は:
|
||||
|
||||
1. 詳細ポリシーは [SECURITY.md](../SECURITY.md) を確認する
|
||||
2. 下の [FAQ](#faq) セクションを見る
|
||||
3. `[SECURITY]` ラベル付きで Discussion を開く
|
||||
4. 機密性の高い質問は非公開脆弱性報告を使う
|
||||
|
||||
## FAQ
|
||||
|
||||
**Q: 報告は秘密に保たれるか?**
|
||||
A: はい、修正リリースまで秘密に保たれる。詳細は修正に関わる者にのみ共有する。
|
||||
|
||||
**Q: 公開開示まで待たなければならない期間は?**
|
||||
A: 深刻度に応じた責任ある開示タイムライン(24 時間〜7 日)に従う。必要に応じて延長に同意できる。
|
||||
|
||||
**Q: クレジットは得られるか?**
|
||||
A: はい、希望すればセキュリティアドバイザリとリリースノートに記載する(匿名希望でなければ)。
|
||||
|
||||
**Q: 軽微な脆弱性でも対応してもらえるか?**
|
||||
A: 正当なセキュリティ問題はすべて真剣に扱う。軽微な修正でも認知する。
|
||||
|
||||
**Q: ドキュメントのみの脆弱性も報告してよいか?**
|
||||
A: もちろん。ドキュメントセキュリティも重要。安全でないパターンを含む例はスコープ内。
|
||||
|
||||
**Q: セキュリティ問題か判断できない場合は?**
|
||||
A: それでも報告してほしい。セキュリティ問題でなければそう伝える。誤検知でも問題ない。
|
||||
|
||||
**Q: 報告後に脆弱性を公開で議論してよいか?**
|
||||
A: 不可。アドバイザリ公開まで非公開を保ってほしい。事前開示はユーザーを危険にさらす可能性がある。
|
||||
|
||||
**Q: 報告が受領されたか確認するには?**
|
||||
A: GitHub から自動通知が送られ、24 時間以内に追って連絡する。
|
||||
|
||||
**Q: 返答がない場合は?**
|
||||
A: GitHub セキュリティアドバイザリのページを確認する。それでも応答がない場合、非公開報告にコメントしてフォローアップしてほしい。
|
||||
|
||||
## リソース
|
||||
|
||||
- [SECURITY.md](../SECURITY.md) — 完全なセキュリティポリシー
|
||||
- [CONTRIBUTING.md](../CONTRIBUTING.md) — 貢献ガイドライン
|
||||
- [CODE_OF_CONDUCT.md](../CODE_OF_CONDUCT.md) — コミュニティ基準
|
||||
- [OWASP Vulnerability Disclosure](https://cheatsheetseries.owasp.org/cheatsheets/Vulnerability_Disclosure_Cheat_Sheet.html) — 責任ある開示のベストプラクティス
|
||||
- [Coordinated Vulnerability Disclosure](https://cheatsheetseries.owasp.org/cheatsheets/Vulnerable_Dependency_Management_Cheat_Sheet.html)
|
||||
|
||||
---
|
||||
|
||||
本プロジェクトのセキュリティ向上に協力してくれてありがとう!🔒
|
||||
Vendored
+344
@@ -0,0 +1,344 @@
|
||||
<!-- i18n-source: .github/TESTING.md -->
|
||||
<!-- i18n-source-sha: 728bd50 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
# テストガイド
|
||||
|
||||
本ドキュメントは Claude How To のテスト基盤について説明する。
|
||||
|
||||
## 概要
|
||||
|
||||
本プロジェクトは GitHub Actions を使い、すべてのプッシュとプルリクエストで自動的にテストを実行する。テスト内容:
|
||||
|
||||
- **ユニットテスト**: pytest による Python テスト
|
||||
- **コード品質**: Ruff によるリンティングとフォーマット
|
||||
- **セキュリティ**: Bandit による脆弱性スキャン
|
||||
- **型チェック**: mypy による静的型解析
|
||||
- **ビルド検証**: EPUB 生成テスト
|
||||
|
||||
## ローカルでテストを実行する
|
||||
|
||||
### 前提条件
|
||||
|
||||
```bash
|
||||
# Install uv (fast Python package manager)
|
||||
pip install uv
|
||||
|
||||
# Or on macOS with Homebrew
|
||||
brew install uv
|
||||
```
|
||||
|
||||
### 環境セットアップ
|
||||
|
||||
```bash
|
||||
# Clone the repository
|
||||
git clone https://github.com/luongnv89/claude-howto.git
|
||||
cd claude-howto
|
||||
|
||||
# Create virtual environment
|
||||
uv venv
|
||||
|
||||
# Activate it
|
||||
source .venv/bin/activate # macOS/Linux
|
||||
# or
|
||||
.venv\Scripts\activate # Windows
|
||||
|
||||
# Install development dependencies
|
||||
uv pip install -r requirements-dev.txt
|
||||
```
|
||||
|
||||
### テスト実行
|
||||
|
||||
```bash
|
||||
# Run all unit tests
|
||||
pytest scripts/tests/ -v
|
||||
|
||||
# Run tests with coverage
|
||||
pytest scripts/tests/ -v --cov=scripts --cov-report=html
|
||||
|
||||
# Run specific test file
|
||||
pytest scripts/tests/test_build_epub.py -v
|
||||
|
||||
# Run specific test function
|
||||
pytest scripts/tests/test_build_epub.py::test_function_name -v
|
||||
|
||||
# Run tests in watch mode (requires pytest-watch)
|
||||
ptw scripts/tests/
|
||||
```
|
||||
|
||||
### リンティング実行
|
||||
|
||||
```bash
|
||||
# Check code formatting
|
||||
ruff format --check scripts/
|
||||
|
||||
# Auto-fix formatting issues
|
||||
ruff format scripts/
|
||||
|
||||
# Run linter
|
||||
ruff check scripts/
|
||||
|
||||
# Auto-fix linter issues
|
||||
ruff check --fix scripts/
|
||||
```
|
||||
|
||||
### セキュリティスキャン実行
|
||||
|
||||
```bash
|
||||
# Run Bandit security scan
|
||||
bandit -c pyproject.toml -r scripts/ --exclude scripts/tests/
|
||||
|
||||
# Generate JSON report
|
||||
bandit -c pyproject.toml -r scripts/ --exclude scripts/tests/ -f json -o bandit-report.json
|
||||
```
|
||||
|
||||
### 型チェック実行
|
||||
|
||||
```bash
|
||||
# Check types with mypy
|
||||
mypy scripts/ --ignore-missing-imports --no-implicit-optional
|
||||
```
|
||||
|
||||
## GitHub Actions ワークフロー
|
||||
|
||||
### トリガー
|
||||
|
||||
- `main` または `develop` ブランチへの **プッシュ**(scripts が変更されたとき)
|
||||
- `main` への **プルリクエスト**(scripts が変更されたとき)
|
||||
- 手動の workflow dispatch
|
||||
|
||||
### ジョブ
|
||||
|
||||
#### 1. ユニットテスト(pytest)
|
||||
|
||||
- **実行環境**: Ubuntu latest
|
||||
- **Python バージョン**: 3.10、3.11、3.12
|
||||
- **内容**:
|
||||
- `requirements-dev.txt` から依存関係をインストール
|
||||
- カバレッジレポート付きで pytest を実行
|
||||
- カバレッジを Codecov へアップロード
|
||||
- テスト結果とカバレッジ HTML をアーカイブ
|
||||
|
||||
**結果**: テストが 1 つでも失敗するとワークフロー失敗(クリティカル)
|
||||
|
||||
#### 2. コード品質(Ruff)
|
||||
|
||||
- **実行環境**: Ubuntu latest
|
||||
- **Python バージョン**: 3.11
|
||||
- **内容**:
|
||||
- `ruff format` でコードフォーマットを確認
|
||||
- `ruff check` でリンターを実行
|
||||
- 問題を報告するがワークフローは失敗させない
|
||||
|
||||
**結果**: ノンブロッキング(警告のみ)
|
||||
|
||||
#### 3. セキュリティスキャン(Bandit)
|
||||
|
||||
- **実行環境**: Ubuntu latest
|
||||
- **Python バージョン**: 3.11
|
||||
- **内容**:
|
||||
- セキュリティ脆弱性をスキャン
|
||||
- JSON レポートを生成
|
||||
- レポートをアーティファクトとしてアップロード
|
||||
|
||||
**結果**: ノンブロッキング(警告のみ)
|
||||
|
||||
#### 4. 型チェック(mypy)
|
||||
|
||||
- **実行環境**: Ubuntu latest
|
||||
- **Python バージョン**: 3.11
|
||||
- **内容**:
|
||||
- 静的型解析を実行
|
||||
- 型不一致を報告
|
||||
- 早期にバグを検出する助けになる
|
||||
|
||||
**結果**: ノンブロッキング(警告のみ)
|
||||
|
||||
#### 5. EPUB ビルド
|
||||
|
||||
- **実行環境**: Ubuntu latest
|
||||
- **依存ジョブ**: pytest、lint、security(すべてパスする必要がある)
|
||||
- **内容**:
|
||||
- `scripts/build_epub.py` を使い EPUB ファイルをビルド
|
||||
- EPUB が正常に生成されたか検証
|
||||
- EPUB をアーティファクトとしてアップロード
|
||||
|
||||
**結果**: ビルドが失敗するとワークフロー失敗(クリティカル)
|
||||
|
||||
#### 6. サマリ
|
||||
|
||||
- **実行環境**: Ubuntu latest
|
||||
- **依存ジョブ**: 上記すべて
|
||||
- **内容**:
|
||||
- ワークフローサマリを生成
|
||||
- すべてのアーティファクトを一覧表示
|
||||
- 全体ステータスを報告
|
||||
|
||||
## テストの書き方
|
||||
|
||||
### テスト構造
|
||||
|
||||
テストは `scripts/tests/` 配下に `test_*.py` のような名前で配置する:
|
||||
|
||||
```python
|
||||
# scripts/tests/test_example.py
|
||||
import pytest
|
||||
from scripts.example_module import some_function
|
||||
|
||||
def test_basic_functionality():
|
||||
"""Test that some_function works correctly."""
|
||||
result = some_function("input")
|
||||
assert result == "expected_output"
|
||||
|
||||
def test_error_handling():
|
||||
"""Test that some_function handles errors gracefully."""
|
||||
with pytest.raises(ValueError):
|
||||
some_function("invalid_input")
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_async_function():
|
||||
"""Test async functions."""
|
||||
result = await async_function()
|
||||
assert result is not None
|
||||
```
|
||||
|
||||
### テストのベストプラクティス
|
||||
|
||||
- **記述的な名前を使う**: `test_function_returns_correct_value()`
|
||||
- **テスト 1 つにつきアサート 1 つ**(可能な限り): 失敗のデバッグが容易
|
||||
- **再利用可能なセットアップにフィクスチャを使う**: `scripts/tests/conftest.py` を参照
|
||||
- **外部サービスをモックする**: `unittest.mock` または `pytest-mock` を使う
|
||||
- **エッジケースをテストする**: 空入力、None 値、エラー
|
||||
- **テストを高速に保つ**: sleep() と外部 I/O を避ける
|
||||
- **pytest マーカーを使う**: 遅いテストには `@pytest.mark.slow`
|
||||
|
||||
### フィクスチャ
|
||||
|
||||
共通フィクスチャは `scripts/tests/conftest.py` に定義する:
|
||||
|
||||
```python
|
||||
# Use fixtures in your tests
|
||||
def test_something(tmp_path):
|
||||
"""tmp_path fixture provides temporary directory."""
|
||||
test_file = tmp_path / "test.txt"
|
||||
test_file.write_text("content")
|
||||
assert test_file.read_text() == "content"
|
||||
```
|
||||
|
||||
## カバレッジレポート
|
||||
|
||||
### ローカルカバレッジ
|
||||
|
||||
```bash
|
||||
# Generate coverage report
|
||||
pytest scripts/tests/ --cov=scripts --cov-report=html
|
||||
|
||||
# Open the coverage report in your browser
|
||||
open htmlcov/index.html
|
||||
```
|
||||
|
||||
### カバレッジ目標
|
||||
|
||||
- **最低カバレッジ**: 80%
|
||||
- **ブランチカバレッジ**: 有効
|
||||
- **重点領域**: コア機能とエラー経路
|
||||
|
||||
## pre-commit フック
|
||||
|
||||
本プロジェクトは pre-commit フックでコミット前に自動チェックを実行する:
|
||||
|
||||
```bash
|
||||
# Install pre-commit hooks
|
||||
pre-commit install
|
||||
|
||||
# Run hooks manually
|
||||
pre-commit run --all-files
|
||||
|
||||
# Skip hooks for a commit (not recommended)
|
||||
git commit --no-verify
|
||||
```
|
||||
|
||||
`.pre-commit-config.yaml` で設定済みのフック:
|
||||
- Ruff フォーマッター
|
||||
- Ruff リンター
|
||||
- Bandit セキュリティスキャナ
|
||||
- YAML 検証
|
||||
- ファイルサイズチェック
|
||||
- マージコンフリクト検出
|
||||
|
||||
## トラブルシューティング
|
||||
|
||||
### ローカルでパスするが CI で失敗する
|
||||
|
||||
よくある原因:
|
||||
1. **Python バージョンの違い**: CI は 3.10、3.11、3.12 を使う
|
||||
2. **依存関係の不足**: `requirements-dev.txt` を更新する
|
||||
3. **プラットフォーム差異**: パス区切り、環境変数
|
||||
4. **不安定なテスト**: タイミングや順序に依存するテスト
|
||||
|
||||
解決策:
|
||||
```bash
|
||||
# Test with the same Python versions
|
||||
uv python install 3.10 3.11 3.12
|
||||
|
||||
# Test with clean environment
|
||||
rm -rf .venv
|
||||
uv venv
|
||||
uv pip install -r requirements-dev.txt
|
||||
pytest scripts/tests/
|
||||
```
|
||||
|
||||
### Bandit が誤検知を出す
|
||||
|
||||
セキュリティ警告の中には誤検知がある場合もある。`pyproject.toml` で設定する:
|
||||
|
||||
```toml
|
||||
[tool.bandit]
|
||||
exclude_dirs = ["scripts/tests"]
|
||||
skips = ["B101"] # Skip assert_used warning
|
||||
```
|
||||
|
||||
### 型チェックが厳しすぎる
|
||||
|
||||
特定ファイルで型チェックを緩める:
|
||||
|
||||
```python
|
||||
# Add at the top of file
|
||||
# type: ignore
|
||||
|
||||
# Or for specific lines
|
||||
some_dynamic_code() # type: ignore
|
||||
```
|
||||
|
||||
## 継続的インテグレーションのベストプラクティス
|
||||
|
||||
1. **テストを高速に保つ**: 各テストは 1 秒以内で完了する
|
||||
2. **外部 API をテストしない**: 外部サービスをモックする
|
||||
3. **隔離してテストする**: 各テストは独立しているべき
|
||||
4. **明確なアサートを使う**: `assert x` ではなく `assert x == 5`
|
||||
5. **非同期テストを扱う**: `@pytest.mark.asyncio` を使う
|
||||
6. **レポートを生成する**: カバレッジ、セキュリティ、型チェック
|
||||
|
||||
## リソース
|
||||
|
||||
- [pytest Documentation](https://docs.pytest.org/)
|
||||
- [Ruff Documentation](https://docs.astral.sh/ruff/)
|
||||
- [Bandit Documentation](https://bandit.readthedocs.io/)
|
||||
- [mypy Documentation](https://mypy.readthedocs.io/)
|
||||
- [GitHub Actions Documentation](https://docs.github.com/en/actions)
|
||||
|
||||
## テストへの貢献
|
||||
|
||||
PR を提出する際:
|
||||
|
||||
1. 新機能には **テストを書く**
|
||||
2. **ローカルでテストを実行**: `pytest scripts/tests/ -v`
|
||||
3. **カバレッジを確認**: `pytest scripts/tests/ --cov=scripts`
|
||||
4. **リンティングを実行**: `ruff check scripts/`
|
||||
5. **セキュリティスキャン**: `bandit -r scripts/ --exclude scripts/tests/`
|
||||
6. テストが変わる場合は **ドキュメントを更新**
|
||||
|
||||
すべての PR にはテストが必要!🧪
|
||||
|
||||
---
|
||||
|
||||
テストに関する質問や問題は、GitHub Issue または Discussion を開いてほしい。
|
||||
Vendored
+60
@@ -0,0 +1,60 @@
|
||||
<!-- i18n-source: .github/pull_request_template.md -->
|
||||
<!-- i18n-source-sha: 5fd984a -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
## 概要
|
||||
この PR が何をするのかを簡潔にまとめる。
|
||||
|
||||
## 変更の種類
|
||||
- [ ] 新しいサンプルまたはテンプレート
|
||||
- [ ] ドキュメント改善
|
||||
- [ ] バグ修正
|
||||
- [ ] 機能ガイド
|
||||
- [ ] その他(記述してほしい)
|
||||
|
||||
## 関連 Issue
|
||||
Closes #(issue 番号)
|
||||
|
||||
## 変更内容
|
||||
- 変更 1
|
||||
- 変更 2
|
||||
- 変更 3
|
||||
|
||||
## レビューの観点
|
||||
レビュアーが特に注目すべき点は何か。
|
||||
|
||||
## 変更ファイル
|
||||
- `path/to/file1.md`
|
||||
- `path/to/file2.md`
|
||||
|
||||
## テスト
|
||||
どのようにテストしたか。
|
||||
- [ ] Claude Code でローカルにテスト済み
|
||||
- [ ] サンプルが動作することを確認済み
|
||||
- [ ] リンク・参照を確認済み
|
||||
- [ ] 誤字・読みやすさを確認済み
|
||||
|
||||
## チェックリスト
|
||||
- [ ] プロジェクトの構造・規約に従っている
|
||||
- [ ] 明確なドキュメント・サンプルを含む
|
||||
- [ ] コード・サンプルがコピペで利用可能
|
||||
- [ ] すべてのリンクが検証済みで動作する
|
||||
- [ ] 機密情報を含まない(鍵、トークン、認証情報など)
|
||||
- [ ] 関連する README を更新済み
|
||||
- [ ] コミットメッセージが Conventional Commits に従っている
|
||||
- [ ] 大きいファイル(1MB 超)を追加していない
|
||||
|
||||
## スクリーンショット・例
|
||||
該当する場合、追加内容を提示してほしい。
|
||||
```
|
||||
[サンプルコードまたは前後比較]
|
||||
```
|
||||
|
||||
## 破壊的変更
|
||||
既存のコンテンツや動作を変更するか。
|
||||
- [ ] 破壊的変更なし
|
||||
- [ ] あり、下記に記載
|
||||
|
||||
ある場合、内容を記載してほしい。
|
||||
|
||||
## 補足
|
||||
レビュアー向けの追加情報があれば。
|
||||
@@ -0,0 +1,618 @@
|
||||
<!-- i18n-source: 01-slash-commands/README.md -->
|
||||
<!-- i18n-source-sha: d17d515 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="../../resources/logos/claude-howto-logo-dark.svg">
|
||||
<img alt="Claude How To" src="../../resources/logos/claude-howto-logo.svg">
|
||||
</picture>
|
||||
|
||||
# スラッシュコマンド
|
||||
|
||||
## 概要
|
||||
|
||||
スラッシュコマンドは、対話セッション中に Claude の動作を制御するためのショートカットである。次のようないくつかの種類がある:
|
||||
|
||||
- **組み込みコマンド**: Claude Code が提供する(`/help`、`/clear`、`/model`)
|
||||
- **スキル**: ユーザーが `SKILL.md` ファイルとして定義するコマンド(`/optimize`、`/pr`)
|
||||
- **プラグインコマンド**: インストール済みプラグインから提供されるコマンド(`/frontend-design:frontend-design`)
|
||||
- **MCP プロンプト**: MCP サーバーから提供されるコマンド(`/mcp__github__list_prs`)
|
||||
|
||||
> **注意**: カスタムスラッシュコマンドはスキルに統合された。`.claude/commands/` のファイルは引き続き動くが、現在は `.claude/skills/` のスキル方式が推奨である。どちらも `/command-name` のショートカットを作る。完全なリファレンスは [スキルガイド](../03-skills/) を参照。
|
||||
|
||||
## 組み込みコマンドリファレンス
|
||||
|
||||
組み込みコマンドはよく使うアクションのショートカットである。**60 種類以上の組み込みコマンド**と **5 つの同梱スキル**が利用できる。Claude Code 上で `/` をタイプすると一覧が出る。`/` の後に文字を続けるとフィルタできる。
|
||||
|
||||
| コマンド | 用途 |
|
||||
|---------|------|
|
||||
| `/add-dir <path>` | 作業ディレクトリを追加 |
|
||||
| `/agents` | エージェント設定を管理 |
|
||||
| `/branch [name]` | 会話を分岐させて新しいセッションにする(エイリアス: `/fork`)。注: `/fork` は v2.1.77 で `/branch` に改名 |
|
||||
| `/btw <question>` | Claude がメインタスクを進めている間に、メイン会話のコンテキストを汚さず一時的なサイド質問をする |
|
||||
| `/chrome` | Chrome ブラウザ統合を設定 |
|
||||
| `/clear` | 会話をクリア(エイリアス: `/reset`、`/new`) |
|
||||
| `/color [color\|default]` | プロンプトバーの色を設定 |
|
||||
| `/compact [instructions]` | 任意のフォーカス指示を付けて会話を圧縮 |
|
||||
| `/config` | 設定を開く(エイリアス: `/settings`) |
|
||||
| `/context` | コンテキスト使用量をカラーグリッドで可視化 |
|
||||
| `/copy [N]` | アシスタントの応答をクリップボードにコピー。`w` でファイル書き出し |
|
||||
| `/cost` | `/usage` のタイピング用エイリアス — コストタブを開く(v2.1.118+) |
|
||||
| `/desktop` | Desktop アプリで継続(エイリアス: `/app`) |
|
||||
| `/diff` | 未コミット変更のインタラクティブ差分ビューア |
|
||||
| `/doctor` | インストール状態を診断 — Claude が応答中でも開ける。ステータスアイコンを表示。`f` で問題を自動修正(v2.1.116 で強化) |
|
||||
| `/effort [low\|medium\|high\|xhigh\|max\|auto]` | 矢印キーのスライダーで思考量を設定。レベル: `low` → `medium` → `high` → `xhigh`(v2.1.111 で追加)→ `max`。Opus 4.7 のデフォルトは `xhigh`、`max` は Opus 4.7 が必要 |
|
||||
| `/exit` | REPL を終了(エイリアス: `/quit`) |
|
||||
| `/export [filename]` | 現在の会話をファイルまたはクリップボードにエクスポート |
|
||||
| `/extra-usage` | レート制限の追加使用量を設定 |
|
||||
| `/fast [on\|off]` | 高速モードを切り替え |
|
||||
| `/feedback` | フィードバックを送信(エイリアス: `/bug`) |
|
||||
| `/focus` | フォーカスビューを切り替え(v2.1.110 で追加。フォーカス切替は `Ctrl+O` から本コマンドへ移行) |
|
||||
| `/help` | ヘルプを表示 |
|
||||
| `/hooks` | フック設定を表示 |
|
||||
| `/ide` | IDE 統合を管理 |
|
||||
| `/init` | `CLAUDE.md` を初期化。インタラクティブフローには `CLAUDE_CODE_NEW_INIT=1` を設定 |
|
||||
| `/insights` | セッション分析レポートを生成 |
|
||||
| `/install-github-app` | GitHub Actions アプリをセットアップ |
|
||||
| `/install-slack-app` | Slack アプリをインストール |
|
||||
| `/keybindings` | キーバインド設定を開く |
|
||||
| `/less-permission-prompts` | 直近の Bash/MCP ツール呼び出しを分析し、優先度の高い許可リストを `.claude/settings.json` に追加して権限プロンプトを減らす(v2.1.111 で追加) |
|
||||
| `/login` | Anthropic アカウントを切り替え |
|
||||
| `/logout` | Anthropic アカウントからサインアウト |
|
||||
| `/mcp` | MCP サーバーと OAuth を管理 |
|
||||
| `/memory` | `CLAUDE.md` を編集、自動メモリを切り替え |
|
||||
| `/mobile` | モバイルアプリの QR コード(エイリアス: `/ios`、`/android`) |
|
||||
| `/model [model]` | モデル選択。左右キーで思考量を変更 |
|
||||
| `/passes` | Claude Code 無料 1 週間を共有 |
|
||||
| `/permissions` | 権限を表示/更新(エイリアス: `/allowed-tools`) |
|
||||
| `/plan [description]` | プランモードに入る |
|
||||
| `/plugin` | プラグインを管理 |
|
||||
| `/proactive` | `/loop` のエイリアス(v2.1.105 で追加) |
|
||||
| `/powerup` | アニメーション付きデモのインタラクティブレッスンで機能を発見 |
|
||||
| `/privacy-settings` | プライバシー設定(Pro/Max のみ) |
|
||||
| `/release-notes` | 変更履歴を表示 |
|
||||
| `/recap` | セッションへ戻ってきた際にセッションのおさらい/要約を表示(v2.1.108 で追加) |
|
||||
| `/reload-plugins` | アクティブなプラグインをリロード |
|
||||
| `/remote-control` | claude.ai からのリモート制御(エイリアス: `/rc`) |
|
||||
| `/remote-env` | デフォルトのリモート環境を設定 |
|
||||
| `/rename [name]` | セッションをリネーム |
|
||||
| `/resume [session]` | 会話を再開(エイリアス: `/continue`) |
|
||||
| `/review` | **非推奨** — 代わりに `code-review` プラグインを導入する |
|
||||
| `/rewind` | 会話やコードを巻き戻す(エイリアス: `/checkpoint`) |
|
||||
| `/sandbox` | サンドボックスモードを切り替え |
|
||||
| `/schedule [description]` | クラウドのスケジュールタスクを作成/管理 |
|
||||
| `/security-review` | ブランチをセキュリティ脆弱性の観点で分析 |
|
||||
| `/skills` | 利用可能なスキルを一覧表示 |
|
||||
| `/stats` | `/usage` のタイピング用エイリアス — 統計タブ(日次使用量、セッション、ストリーク)を開く(v2.1.118+) |
|
||||
| `/stickers` | Claude Code のステッカーを注文 |
|
||||
| `/status` | バージョン、モデル、アカウントを表示 |
|
||||
| `/statusline` | ステータスラインを設定 |
|
||||
| `/tasks` | バックグラウンドタスクを一覧/管理 |
|
||||
| `/team-onboarding` | プロジェクトの Claude Code 設定からチームメイト向けランプアップガイドを生成(v2.1.101 で新規) |
|
||||
| `/terminal-setup` | ターミナルのキーバインドを設定 |
|
||||
| `/theme` | テーマピッカーを開く/カスタムテーマを管理(v2.1.118)。カスタムテーマは `~/.claude/themes/<name>.json` に JSON で定義 |
|
||||
| `/tui` | ちらつきのないフルスクリーン TUI(テキストユーザーインターフェース)モードを切り替え(v2.1.110 で追加) |
|
||||
| `/ultraplan <prompt>` | ultraplan セッションでプランを下書きし、ブラウザでレビュー |
|
||||
| `/ultrareview` | マルチエージェント分析による包括的なクラウドベースのコードレビュー(v2.1.111 で追加) |
|
||||
| `/undo` | `/rewind` のエイリアス(v2.1.108 で追加) |
|
||||
| `/upgrade` | 上位プランへのアップグレードページを開く |
|
||||
| `/usage` | 正式な使用状況ダッシュボード(v2.1.118)— プラン使用量制限、レート制限、コスト、日次セッション統計を統合。`/cost` と `/stats` は特定のタブを開くタイピング用エイリアス |
|
||||
| `/voice` | プッシュトゥトーク音声入力を切り替え |
|
||||
|
||||
### 同梱スキル
|
||||
|
||||
これらのスキルは Claude Code に同梱され、スラッシュコマンドのように呼び出せる:
|
||||
|
||||
| スキル | 用途 |
|
||||
|-------|------|
|
||||
| `/batch <instruction>` | ワークツリーを使った大規模並列変更をオーケストレートする |
|
||||
| `/claude-api` | プロジェクトの言語に応じた Claude API リファレンスを読み込む |
|
||||
| `/debug [description]` | デバッグログを有効化 |
|
||||
| `/loop [interval] <prompt>` | プロンプトを定期的に繰り返し実行 |
|
||||
| `/simplify [focus]` | 変更されたファイルをコード品質の観点でレビュー |
|
||||
|
||||
### 非推奨コマンド
|
||||
|
||||
| コマンド | ステータス |
|
||||
|---------|----------|
|
||||
| `/review` | 非推奨 — `code-review` プラグインに置き換え |
|
||||
| `/output-style` | v2.1.73 から非推奨 |
|
||||
| `/fork` | `/branch` に改名(エイリアスは引き続き有効、v2.1.77) |
|
||||
| `/pr-comments` | v2.1.91 で削除 — Claude に直接 PR コメントを見るよう依頼する |
|
||||
| `/vim` | v2.1.92 で削除 — /config → エディタモードを使う |
|
||||
|
||||
### 直近の変更点
|
||||
|
||||
- `/fork` を `/branch` に改名し、`/fork` はエイリアスとして残置(v2.1.77)
|
||||
- `/output-style` を非推奨化(v2.1.73)
|
||||
- `/review` を非推奨化、`code-review` プラグインを推奨
|
||||
- `/effort` コマンドを追加。`max` レベルは Opus 4.7 が必要(当初は Opus 4.6 限定)
|
||||
- プッシュトゥトーク音声入力の `/voice` コマンドを追加
|
||||
- スケジュールタスクの作成/管理用の `/schedule` コマンドを追加
|
||||
- プロンプトバーをカスタマイズする `/color` コマンドを追加
|
||||
- /pr-comments を v2.1.91 で削除 — Claude に直接 PR コメントを見るよう依頼する
|
||||
- /vim を v2.1.92 で削除 — /config → エディタモードを使う
|
||||
- ブラウザベースのプランレビューと実行を行う /ultraplan を追加
|
||||
- インタラクティブな機能レッスン用に /powerup を追加
|
||||
- サンドボックスモード切替用に /sandbox を追加
|
||||
- `/model` ピッカーが、生のモデル ID ではなく可読ラベル(例: "Sonnet 4.6")を表示するようになった
|
||||
- `/resume` が `/continue` エイリアスに対応
|
||||
- MCP プロンプトが `/mcp__<server>__<prompt>` コマンドとして利用可能([MCP プロンプトをコマンドとして使う](#mcp-プロンプトをコマンドとして使う) を参照)
|
||||
- チームメイト向けランプアップガイドを自動生成する `/team-onboarding` を追加(v2.1.101)
|
||||
- ちらつきのないフルスクリーン TUI 描画用に `/tui` コマンドを追加(v2.1.110)
|
||||
- フォーカスビュー切替用に `/focus` コマンドを追加。`Ctrl+O` は詳細トランスクリプトの切替のみに(v2.1.110)
|
||||
- セッションコンテキストのおさらいを手動で発火する `/recap` コマンドを追加(v2.1.108)
|
||||
- `/undo` を `/rewind` のエイリアスとして追加(v2.1.108)
|
||||
- `/proactive` を `/loop` のエイリアスとして追加(v2.1.105)
|
||||
- `/effort` がインタラクティブな矢印キースライダーを獲得し、`high` と `max` の間に新しい `xhigh` レベルを追加。Opus 4.7 プランではデフォルト思考量が `xhigh` に引き上げられた(v2.1.111)
|
||||
- 包括的なクラウドベースのマルチエージェントコードレビュー用に `/ultrareview` を追加(v2.1.111)
|
||||
- Bash/MCP ツール呼び出しを分析し、`.claude/settings.json` の許可リストで権限プロンプトを減らす `/less-permission-prompts` を追加(v2.1.111)
|
||||
- Opus 4.7 を利用する Max サブスクライバについて、Auto モードに `--enable-auto-mode` フラグが不要になった(v2.1.112)
|
||||
|
||||
### `/team-onboarding` — チームメイト向けランプアップガイド
|
||||
|
||||
> **v2.1.101 で新規追加**
|
||||
|
||||
`/team-onboarding` を使うと、プロジェクトのローカルな Claude Code 利用状況からチームメイト向けランプアップガイドを生成できる。コマンドは `CLAUDE.md`、インストール済みのスキル、サブエージェント、フック、最近のワークフローを点検し、新しい開発者がすぐに生産的になれるオンボーディングドキュメントを作成する。
|
||||
|
||||
組み込みコマンドであり、インストール作業は不要である。
|
||||
|
||||
**使い方:**
|
||||
|
||||
```bash
|
||||
claude /team-onboarding
|
||||
```
|
||||
|
||||
生成されるガイドは次の内容を要約する:
|
||||
|
||||
- [`CLAUDE.md`](../02-memory/README.md) からのプロジェクトの目的と主な慣習
|
||||
- 利用可能な [スキル](../03-skills/README.md) と自動起動の条件
|
||||
- 設定済みの [サブエージェント](../04-subagents/README.md) とその責務
|
||||
- 一般的なイベントで実行される [フック](../06-hooks/README.md)
|
||||
- 新規参加者が知っておくべき共通ワークフロー
|
||||
|
||||
**提供開始:** Claude Code v2.1.101(2026 年 4 月 11 日)に同梱。
|
||||
|
||||
## カスタムコマンド(現在はスキル)
|
||||
|
||||
カスタムスラッシュコマンドは **スキルに統合された**。どちらの方式でも `/command-name` で呼び出せるコマンドを作成できる:
|
||||
|
||||
| 方式 | 配置場所 | ステータス |
|
||||
|------|---------|----------|
|
||||
| **スキル(推奨)** | `.claude/skills/<name>/SKILL.md` | 現行標準 |
|
||||
| **レガシーコマンド** | `.claude/commands/<name>.md` | 引き続き動作 |
|
||||
|
||||
スキルとコマンドが同じ名前で存在する場合、**スキルが優先される**。例えば `.claude/commands/review.md` と `.claude/skills/review/SKILL.md` の両方が存在すれば、スキル版が使われる。
|
||||
|
||||
### 移行パス
|
||||
|
||||
既存の `.claude/commands/` のファイルは、変更なしで動作し続ける。スキルへ移行するには:
|
||||
|
||||
**変更前(コマンド):**
|
||||
```
|
||||
.claude/commands/optimize.md
|
||||
```
|
||||
|
||||
**変更後(スキル):**
|
||||
```
|
||||
.claude/skills/optimize/SKILL.md
|
||||
```
|
||||
|
||||
### なぜスキルなのか
|
||||
|
||||
スキルはレガシーコマンドにはない次の機能を提供する:
|
||||
|
||||
- **ディレクトリ構造**: スクリプト、テンプレート、参照ファイルをまとめられる
|
||||
- **自動起動**: 関連性があるとき Claude が自動でスキルを発動できる
|
||||
- **起動制御**: ユーザー、Claude、両者のうち誰が起動できるかを選べる
|
||||
- **サブエージェント実行**: `context: fork` で隔離されたコンテキストでスキルを実行できる
|
||||
- **段階的開示**: 必要なときだけ追加ファイルをロードする
|
||||
|
||||
### スキルとしてカスタムコマンドを作成する
|
||||
|
||||
`SKILL.md` を含むディレクトリを作る:
|
||||
|
||||
```bash
|
||||
mkdir -p .claude/skills/my-command
|
||||
```
|
||||
|
||||
**ファイル:** `.claude/skills/my-command/SKILL.md`
|
||||
|
||||
```yaml
|
||||
---
|
||||
name: my-command
|
||||
description: What this command does and when to use it
|
||||
---
|
||||
|
||||
# My Command
|
||||
|
||||
Instructions for Claude to follow when this command is invoked.
|
||||
|
||||
1. First step
|
||||
2. Second step
|
||||
3. Third step
|
||||
```
|
||||
|
||||
### フロントマターリファレンス
|
||||
|
||||
| フィールド | 用途 | デフォルト |
|
||||
|----------|------|----------|
|
||||
| `name` | コマンド名(`/name` になる) | ディレクトリ名 |
|
||||
| `description` | 簡単な説明(Claude がいつ使うか判断する材料) | 最初の段落 |
|
||||
| `argument-hint` | 自動補完用の想定引数 | なし |
|
||||
| `allowed-tools` | 権限なしで使えるツール | 継承 |
|
||||
| `model` | 使用する特定のモデル | 継承 |
|
||||
| `disable-model-invocation` | `true` ならユーザーのみ起動可(Claude は不可) | `false` |
|
||||
| `user-invocable` | `false` なら `/` メニューから隠す | `true` |
|
||||
| `context` | `fork` に設定すると隔離サブエージェントで実行 | なし |
|
||||
| `agent` | `context: fork` 利用時のエージェント種別 | `general-purpose` |
|
||||
| `hooks` | スキルスコープのフック(PreToolUse、PostToolUse、Stop) | なし |
|
||||
|
||||
### 引数
|
||||
|
||||
コマンドは引数を受け取れる:
|
||||
|
||||
**`$ARGUMENTS` で全引数を受ける:**
|
||||
|
||||
```yaml
|
||||
---
|
||||
name: fix-issue
|
||||
description: Fix a GitHub issue by number
|
||||
---
|
||||
|
||||
Fix issue #$ARGUMENTS following our coding standards
|
||||
```
|
||||
|
||||
使い方: `/fix-issue 123` → `$ARGUMENTS` は "123" になる
|
||||
|
||||
**個別引数を `$0`、`$1` などで受ける:**
|
||||
|
||||
```yaml
|
||||
---
|
||||
name: review-pr
|
||||
description: Review a PR with priority
|
||||
---
|
||||
|
||||
Review PR #$0 with priority $1
|
||||
```
|
||||
|
||||
使い方: `/review-pr 456 high` → `$0`="456"、`$1`="high"
|
||||
|
||||
### シェルコマンドによる動的コンテキスト
|
||||
|
||||
プロンプトの前に `!`command`` で bash コマンドを実行する:
|
||||
|
||||
```yaml
|
||||
---
|
||||
name: commit
|
||||
description: Create a git commit with context
|
||||
allowed-tools: Bash(git *)
|
||||
---
|
||||
|
||||
## Context
|
||||
|
||||
- Current git status: !`git status`
|
||||
- Current git diff: !`git diff HEAD`
|
||||
- Current branch: !`git branch --show-current`
|
||||
- Recent commits: !`git log --oneline -5`
|
||||
|
||||
## Your task
|
||||
|
||||
Based on the above changes, create a single git commit.
|
||||
```
|
||||
|
||||
### ファイル参照
|
||||
|
||||
`@` でファイル内容を埋め込む:
|
||||
|
||||
```markdown
|
||||
Review the implementation in @src/utils/helpers.js
|
||||
Compare @src/old-version.js with @src/new-version.js
|
||||
```
|
||||
|
||||
## プラグインコマンド
|
||||
|
||||
プラグインはカスタムコマンドを提供できる:
|
||||
|
||||
```
|
||||
/plugin-name:command-name
|
||||
```
|
||||
|
||||
または、名前衝突がない場合はシンプルに `/command-name`。
|
||||
|
||||
**例:**
|
||||
```bash
|
||||
/frontend-design:frontend-design
|
||||
/commit-commands:commit
|
||||
```
|
||||
|
||||
## MCP プロンプトをコマンドとして使う
|
||||
|
||||
MCP サーバーはプロンプトをスラッシュコマンドとして公開できる:
|
||||
|
||||
```
|
||||
/mcp__<server-name>__<prompt-name> [arguments]
|
||||
```
|
||||
|
||||
**例:**
|
||||
```bash
|
||||
/mcp__github__list_prs
|
||||
/mcp__github__pr_review 456
|
||||
/mcp__jira__create_issue "Bug title" high
|
||||
```
|
||||
|
||||
### MCP 権限の構文
|
||||
|
||||
権限設定で MCP サーバーへのアクセスを制御する:
|
||||
|
||||
- `mcp__github` — GitHub MCP サーバー全体にアクセス
|
||||
- `mcp__github__*` — すべてのツールにワイルドカードアクセス
|
||||
- `mcp__github__get_issue` — 特定のツールにアクセス
|
||||
|
||||
## コマンドアーキテクチャ
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A["User Input: /command-name"] --> B{"Command Type?"}
|
||||
B -->|Built-in| C["Execute Built-in"]
|
||||
B -->|Skill| D["Load SKILL.md"]
|
||||
B -->|Plugin| E["Load Plugin Command"]
|
||||
B -->|MCP| F["Execute MCP Prompt"]
|
||||
|
||||
D --> G["Parse Frontmatter"]
|
||||
G --> H["Substitute Variables"]
|
||||
H --> I["Execute Shell Commands"]
|
||||
I --> J["Send to Claude"]
|
||||
J --> K["Return Results"]
|
||||
```
|
||||
|
||||
## コマンドのライフサイクル
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant User
|
||||
participant Claude as Claude Code
|
||||
participant FS as File System
|
||||
participant CLI as Shell/Bash
|
||||
|
||||
User->>Claude: Types /optimize
|
||||
Claude->>FS: Searches .claude/skills/ and .claude/commands/
|
||||
FS-->>Claude: Returns optimize/SKILL.md
|
||||
Claude->>Claude: Parses frontmatter
|
||||
Claude->>CLI: Executes !`command` substitutions
|
||||
CLI-->>Claude: Command outputs
|
||||
Claude->>Claude: Substitutes $ARGUMENTS
|
||||
Claude->>User: Processes prompt
|
||||
Claude->>User: Returns results
|
||||
```
|
||||
|
||||
## このフォルダで提供するコマンド
|
||||
|
||||
これらのサンプルコマンドは、スキルとしても、レガシーコマンドとしてもインストールできる。
|
||||
|
||||
### 1. `/optimize` — コード最適化
|
||||
|
||||
パフォーマンス上の問題、メモリリーク、最適化の余地を分析する。
|
||||
|
||||
**使い方:**
|
||||
```
|
||||
/optimize
|
||||
[Paste your code]
|
||||
```
|
||||
|
||||
### 2. `/pr` — プルリクエスト準備
|
||||
|
||||
リント、テスト、コミットメッセージのフォーマットなど、PR 準備チェックリストを案内する。
|
||||
|
||||
**使い方:**
|
||||
```
|
||||
/pr
|
||||
```
|
||||
|
||||
**スクリーンショット:**
|
||||

|
||||
|
||||
### 3. `/generate-api-docs` — API ドキュメント生成
|
||||
|
||||
ソースコードから網羅的な API ドキュメントを生成する。
|
||||
|
||||
**使い方:**
|
||||
```
|
||||
/generate-api-docs
|
||||
```
|
||||
|
||||
### 4. `/commit` — コンテキスト付き git コミット
|
||||
|
||||
リポジトリの動的コンテキストを含めて git コミットを作成する。
|
||||
|
||||
**使い方:**
|
||||
```
|
||||
/commit [optional message]
|
||||
```
|
||||
|
||||
### 5. `/push-all` — ステージ・コミット・push
|
||||
|
||||
全変更をステージングし、コミットを作成し、安全性チェックを行ってリモートへ push する。
|
||||
|
||||
**使い方:**
|
||||
```
|
||||
/push-all
|
||||
```
|
||||
|
||||
**安全性チェック:**
|
||||
- シークレット: `.env*`、`*.key`、`*.pem`、`credentials.json`
|
||||
- API キー: 実キーかプレースホルダかを判別
|
||||
- 大きなファイル: Git LFS なしの `>10MB`
|
||||
- ビルド成果物: `node_modules/`、`dist/`、`__pycache__/`
|
||||
|
||||
### 6. `/doc-refactor` — ドキュメント再構成
|
||||
|
||||
プロジェクトドキュメントを明瞭性とアクセシビリティの観点で再構成する。
|
||||
|
||||
**使い方:**
|
||||
```
|
||||
/doc-refactor
|
||||
```
|
||||
|
||||
### 7. `/setup-ci-cd` — CI/CD パイプライン設定
|
||||
|
||||
品質保証のために pre-commit フックと GitHub Actions を導入する。
|
||||
|
||||
**使い方:**
|
||||
```
|
||||
/setup-ci-cd
|
||||
```
|
||||
|
||||
### 8. `/unit-test-expand` — テストカバレッジ拡充
|
||||
|
||||
未テストの分岐とエッジケースを狙ってテストカバレッジを高める。
|
||||
|
||||
**使い方:**
|
||||
```
|
||||
/unit-test-expand
|
||||
```
|
||||
|
||||
## インストール
|
||||
|
||||
### スキルとして(推奨)
|
||||
|
||||
スキルディレクトリにコピーする:
|
||||
|
||||
```bash
|
||||
# skills ディレクトリを作成
|
||||
mkdir -p .claude/skills
|
||||
|
||||
# 各コマンドファイルごとにスキルディレクトリを作成
|
||||
for cmd in optimize pr commit; do
|
||||
mkdir -p .claude/skills/$cmd
|
||||
cp 01-slash-commands/$cmd.md .claude/skills/$cmd/SKILL.md
|
||||
done
|
||||
```
|
||||
|
||||
### レガシーコマンドとして
|
||||
|
||||
commands ディレクトリにコピーする:
|
||||
|
||||
```bash
|
||||
# プロジェクト全体(チーム向け)
|
||||
mkdir -p .claude/commands
|
||||
cp 01-slash-commands/*.md .claude/commands/
|
||||
|
||||
# 個人利用
|
||||
mkdir -p ~/.claude/commands
|
||||
cp 01-slash-commands/*.md ~/.claude/commands/
|
||||
```
|
||||
|
||||
## 自前のコマンドを作る
|
||||
|
||||
### スキルテンプレート(推奨)
|
||||
|
||||
`.claude/skills/my-command/SKILL.md` を作成する:
|
||||
|
||||
```yaml
|
||||
---
|
||||
name: my-command
|
||||
description: What this command does. Use when [trigger conditions].
|
||||
argument-hint: [optional-args]
|
||||
allowed-tools: Bash(npm *), Read, Grep
|
||||
---
|
||||
|
||||
# Command Title
|
||||
|
||||
## Context
|
||||
|
||||
- Current branch: !`git branch --show-current`
|
||||
- Related files: @package.json
|
||||
|
||||
## Instructions
|
||||
|
||||
1. First step
|
||||
2. Second step with argument: $ARGUMENTS
|
||||
3. Third step
|
||||
|
||||
## Output Format
|
||||
|
||||
- How to format the response
|
||||
- What to include
|
||||
```
|
||||
|
||||
### ユーザーのみが起動可能なコマンド(自動起動なし)
|
||||
|
||||
副作用があり、Claude に自動で発火させたくないコマンド向け:
|
||||
|
||||
```yaml
|
||||
---
|
||||
name: deploy
|
||||
description: Deploy to production
|
||||
disable-model-invocation: true
|
||||
allowed-tools: Bash(npm *), Bash(git *)
|
||||
---
|
||||
|
||||
Deploy the application to production:
|
||||
|
||||
1. Run tests
|
||||
2. Build application
|
||||
3. Push to deployment target
|
||||
4. Verify deployment
|
||||
```
|
||||
|
||||
## ベストプラクティス
|
||||
|
||||
| やる | やらない |
|
||||
|------|---------|
|
||||
| 動詞中心の明確な名前を使う | 一回限りのタスクをコマンドにする |
|
||||
| 起動条件付きの `description` を含める | コマンド内に複雑なロジックを組む |
|
||||
| 単一タスクに絞ったコマンドにする | 機微情報をハードコードする |
|
||||
| 副作用がある場合は `disable-model-invocation` を使う | description フィールドを省く |
|
||||
| 動的コンテキストには `!` プレフィックスを使う | Claude が現在の状態を知っている前提にする |
|
||||
| 関連ファイルはスキルディレクトリで整理する | すべてを 1 ファイルに詰め込む |
|
||||
|
||||
## トラブルシューティング
|
||||
|
||||
### コマンドが見つからない
|
||||
|
||||
**対処:**
|
||||
- ファイルが `.claude/skills/<name>/SKILL.md` または `.claude/commands/<name>.md` に置かれているか確認
|
||||
- フロントマターの `name` フィールドが期待するコマンド名と一致するか確認
|
||||
- Claude Code セッションを再起動
|
||||
- `/help` で利用可能なコマンドを確認
|
||||
|
||||
### コマンドが期待通りに動かない
|
||||
|
||||
**対処:**
|
||||
- 指示をより具体的にする
|
||||
- スキルファイルに例を含める
|
||||
- bash コマンドを使う場合は `allowed-tools` を確認
|
||||
- まずは単純な入力でテストする
|
||||
|
||||
### スキルとコマンドが衝突する
|
||||
|
||||
同じ名前で両方が存在する場合、**スキルが優先される**。どちらかを削除またはリネームする。
|
||||
|
||||
## 関連ガイド
|
||||
|
||||
- **[スキル](../03-skills/)** — スキルの完全リファレンス(自動起動される機能)
|
||||
- **[メモリ](../02-memory/)** — CLAUDE.md による永続コンテキスト
|
||||
- **[サブエージェント](../04-subagents/)** — 委任型 AI エージェント
|
||||
- **[プラグイン](../07-plugins/)** — まとめられたコマンド集
|
||||
- **[フック](../06-hooks/)** — イベント駆動の自動化
|
||||
|
||||
## 追加のリソース
|
||||
|
||||
- [公式インタラクティブモードドキュメント](https://code.claude.com/docs/en/interactive-mode) — 組み込みコマンドリファレンス
|
||||
- [公式スキルドキュメント](https://code.claude.com/docs/en/skills) — スキルの完全リファレンス
|
||||
- [CLI リファレンス](https://code.claude.com/docs/en/cli-reference) — コマンドラインオプション
|
||||
|
||||
---
|
||||
|
||||
**Last Updated**: April 24, 2026
|
||||
**Claude Code Version**: 2.1.119
|
||||
**Sources**:
|
||||
- https://code.claude.com/docs/en/slash-commands
|
||||
- https://code.claude.com/docs/en/interactive-mode
|
||||
- https://code.claude.com/docs/en/changelog
|
||||
- https://github.com/anthropics/claude-code/releases/tag/v2.1.118
|
||||
- https://github.com/anthropics/claude-code/releases/tag/v2.1.116
|
||||
**Compatible Models**: Claude Sonnet 4.6, Claude Opus 4.7, Claude Haiku 4.5
|
||||
|
||||
*[Claude How To](../) ガイドシリーズの一部*
|
||||
@@ -0,0 +1,33 @@
|
||||
<!-- i18n-source: 01-slash-commands/commit.md -->
|
||||
<!-- i18n-source-sha: 7f2e773 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
allowed-tools: Bash(git add:*), Bash(git status:*), Bash(git commit:*), Bash(git diff:*)
|
||||
argument-hint: [message]
|
||||
description: コンテキスト付きで git コミットを作成する
|
||||
---
|
||||
|
||||
## コンテキスト
|
||||
|
||||
- 現在の git ステータス: !`git status`
|
||||
- 現在の git 差分: !`git diff HEAD`
|
||||
- 現在のブランチ: !`git branch --show-current`
|
||||
- 直近のコミット: !`git log --oneline -10`
|
||||
|
||||
## タスク
|
||||
|
||||
上記の変更内容に基づいて、単一の git コミットを作成する。
|
||||
|
||||
引数でメッセージが指定された場合はそれを使う: $ARGUMENTS
|
||||
|
||||
そうでない場合は、変更内容を分析し、Conventional Commits 形式に従って適切なコミットメッセージを作成する:
|
||||
- `feat:` 新機能
|
||||
- `fix:` バグ修正
|
||||
- `docs:` ドキュメント変更
|
||||
- `refactor:` コードのリファクタリング
|
||||
- `test:` テスト追加
|
||||
- `chore:` メンテナンスタスク
|
||||
|
||||
---
|
||||
**Last Updated**: April 9, 2026
|
||||
@@ -0,0 +1,31 @@
|
||||
<!-- i18n-source: 01-slash-commands/doc-refactor.md -->
|
||||
<!-- i18n-source-sha: 7f2e773 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: Documentation Refactor
|
||||
description: プロジェクトドキュメントを再構成して明瞭性とアクセシビリティを高める
|
||||
tags: documentation, refactoring, organization
|
||||
---
|
||||
|
||||
# ドキュメントリファクタリング
|
||||
|
||||
プロジェクトの種類に合わせてドキュメント構造をリファクタリングする:
|
||||
|
||||
1. **プロジェクトを分析**: 種類(ライブラリ/API/Web アプリ/CLI/マイクロサービス)、アーキテクチャ、ユーザーペルソナを特定する
|
||||
2. **ドキュメントを集約**: 技術ドキュメントを `docs/` に移動し、適切な相互参照を整える
|
||||
3. **ルート README.md**: 概要、クイックスタート、モジュール/コンポーネントのサマリ、ライセンス、連絡先を含むエントリーポイントとして整理する
|
||||
4. **コンポーネント別ドキュメント**: モジュール/パッケージ/サービス単位の README ファイルを追加し、セットアップとテスト手順を記載する
|
||||
5. **`docs/` を関連カテゴリで整理する**:
|
||||
- Architecture、API Reference、Database、Design、Troubleshooting、Deployment、Contributing(プロジェクトの必要に応じて調整)
|
||||
6. **ガイドを作成する**(該当するものを選ぶ):
|
||||
- User Guide: アプリケーションのエンドユーザー向けドキュメント
|
||||
- API Documentation: API のエンドポイント、認証、サンプル
|
||||
- Development Guide: セットアップ、テスト、コントリビューションのワークフロー
|
||||
- Deployment Guide: サービス/アプリの本番デプロイ
|
||||
7. **すべての図に Mermaid を使う**(アーキテクチャ、フロー、スキーマ)
|
||||
|
||||
ドキュメントは簡潔に、流し読みしやすく、プロジェクトの種類に即した内容に保つ。
|
||||
|
||||
---
|
||||
**Last Updated**: April 9, 2026
|
||||
@@ -0,0 +1,26 @@
|
||||
<!-- i18n-source: 01-slash-commands/generate-api-docs.md -->
|
||||
<!-- i18n-source-sha: 7f2e773 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
description: ソースコードから網羅的な API ドキュメントを生成する
|
||||
---
|
||||
|
||||
# API ドキュメント生成
|
||||
|
||||
次の手順で API ドキュメントを生成する:
|
||||
|
||||
1. `/src/api/` 配下の全ファイルをスキャンする
|
||||
2. 関数シグネチャと JSDoc コメントを抽出する
|
||||
3. エンドポイント/モジュール単位で整理する
|
||||
4. サンプル付きの Markdown を作成する
|
||||
5. リクエスト/レスポンスのスキーマを含める
|
||||
6. エラーに関するドキュメントを追加する
|
||||
|
||||
出力形式:
|
||||
- `/docs/api.md` に Markdown ファイルとして出力
|
||||
- 全エンドポイントについて curl のサンプルを含める
|
||||
- TypeScript の型定義を追加する
|
||||
|
||||
---
|
||||
**Last Updated**: April 9, 2026
|
||||
@@ -0,0 +1,26 @@
|
||||
<!-- i18n-source: 01-slash-commands/optimize.md -->
|
||||
<!-- i18n-source-sha: 7f2e773 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
description: コードのパフォーマンス上の問題を分析し、最適化案を提示する
|
||||
---
|
||||
|
||||
# コード最適化
|
||||
|
||||
提示されたコードについて、優先度の高い順に以下の項目をレビューする:
|
||||
|
||||
1. **パフォーマンスのボトルネック** — O(n²) の処理や非効率なループを特定する
|
||||
2. **メモリリーク** — 解放されていないリソースや循環参照を発見する
|
||||
3. **アルゴリズムの改善** — より良いアルゴリズムやデータ構造を提案する
|
||||
4. **キャッシュ可能な箇所** — 繰り返される計算を特定する
|
||||
5. **並行性の問題** — 競合状態やスレッディングの問題を発見する
|
||||
|
||||
回答は次の形式でまとめる:
|
||||
- 問題の重大度(Critical/High/Medium/Low)
|
||||
- コード上の該当箇所
|
||||
- 説明
|
||||
- 推奨される修正案とコード例
|
||||
|
||||
---
|
||||
**Last Updated**: April 9, 2026
|
||||
@@ -0,0 +1,33 @@
|
||||
<!-- i18n-source: 01-slash-commands/pr.md -->
|
||||
<!-- i18n-source-sha: 7f2e773 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
description: コードを整え、変更をステージングし、プルリクエストを準備する
|
||||
allowed-tools: Bash(git add:*), Bash(git status:*), Bash(git diff:*), Bash(npm test:*), Bash(npm run lint:*)
|
||||
---
|
||||
|
||||
# プルリクエスト準備チェックリスト
|
||||
|
||||
PR を作成する前に、以下のステップを実行する:
|
||||
|
||||
1. リンタ実行: `prettier --write .`
|
||||
2. テスト実行: `npm test`
|
||||
3. git 差分のレビュー: `git diff HEAD`
|
||||
4. 変更をステージング: `git add .`
|
||||
5. Conventional Commits に従ったコミットメッセージを作成する:
|
||||
- `fix:` バグ修正
|
||||
- `feat:` 新機能
|
||||
- `docs:` ドキュメント
|
||||
- `refactor:` コード再構成
|
||||
- `test:` テスト追加
|
||||
- `chore:` メンテナンス
|
||||
|
||||
6. PR サマリを生成する。次の項目を含める:
|
||||
- 何を変更したか
|
||||
- なぜ変更したか
|
||||
- 実施したテスト
|
||||
- 想定される影響
|
||||
|
||||
---
|
||||
**Last Updated**: April 9, 2026
|
||||
@@ -0,0 +1,160 @@
|
||||
<!-- i18n-source: 01-slash-commands/push-all.md -->
|
||||
<!-- i18n-source-sha: 7f2e773 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
description: 全変更をステージング、コミット、リモートへ push する(取り扱い注意)
|
||||
allowed-tools: Bash(git add:*), Bash(git status:*), Bash(git commit:*), Bash(git push:*), Bash(git diff:*), Bash(git log:*), Bash(git pull:*)
|
||||
---
|
||||
|
||||
# すべてをコミット・push する
|
||||
|
||||
⚠️ **注意**: すべての変更をステージング・コミットし、リモートへ push する。すべての変更がひとまとまりであると確信できる場合のみ使うこと。
|
||||
|
||||
## ワークフロー
|
||||
|
||||
### 1. 変更を分析
|
||||
|
||||
並列で実行する:
|
||||
- `git status` — 変更/追加/削除/追跡外ファイルを表示
|
||||
- `git diff --stat` — 変更統計を表示
|
||||
- `git log -1 --oneline` — メッセージスタイル参考のため直近のコミットを表示
|
||||
|
||||
### 2. 安全性チェック
|
||||
|
||||
**❌ 検出時は STOP し WARN を出すべき項目:**
|
||||
- シークレット: `.env*`、`*.key`、`*.pem`、`credentials.json`、`secrets.yaml`、`id_rsa`、`*.p12`、`*.pfx`、`*.cer`
|
||||
- API キー: `*_API_KEY`、`*_SECRET`、`*_TOKEN` などの変数で実値が入っているもの(`your-api-key`、`xxx`、`placeholder` などのプレースホルダではないもの)
|
||||
- 大きなファイル: Git LFS なしの `>10MB`
|
||||
- ビルド成果物: `node_modules/`、`dist/`、`build/`、`__pycache__/`、`*.pyc`、`.venv/`
|
||||
- 一時ファイル: `.DS_Store`、`thumbs.db`、`*.swp`、`*.tmp`
|
||||
|
||||
**API キー検証:**
|
||||
変更ファイルに以下のようなパターンがないか確認する:
|
||||
```bash
|
||||
OPENAI_API_KEY=sk-proj-xxxxx # ❌ 実キーを検出!
|
||||
AWS_SECRET_KEY=AKIA... # ❌ 実キーを検出!
|
||||
STRIPE_API_KEY=sk_live_... # ❌ 実キーを検出!
|
||||
|
||||
# ✅ 許容されるプレースホルダ:
|
||||
API_KEY=your-api-key-here
|
||||
SECRET_KEY=placeholder
|
||||
TOKEN=xxx
|
||||
API_KEY=<your-key>
|
||||
SECRET=${YOUR_SECRET}
|
||||
```
|
||||
|
||||
**✅ 確認事項:**
|
||||
- `.gitignore` が適切に設定されている
|
||||
- マージ競合がない
|
||||
- 正しいブランチである(main/master の場合は警告)
|
||||
- API キーはプレースホルダのみ
|
||||
|
||||
### 3. 確認を求める
|
||||
|
||||
サマリを提示する:
|
||||
```
|
||||
📊 Changes Summary:
|
||||
- X files modified, Y added, Z deleted
|
||||
- Total: +AAA insertions, -BBB deletions
|
||||
|
||||
🔒 Safety: ✅ No secrets | ✅ No large files | ⚠️ [warnings]
|
||||
🌿 Branch: [name] → origin/[name]
|
||||
|
||||
I will: git add . → commit → push
|
||||
|
||||
Type 'yes' to proceed or 'no' to cancel.
|
||||
```
|
||||
|
||||
**明示的な "yes" を待ってから先へ進む。**
|
||||
|
||||
### 4. 実行(確認後)
|
||||
|
||||
順番に実行する:
|
||||
```bash
|
||||
git add .
|
||||
git status # ステージングを確認
|
||||
```
|
||||
|
||||
### 5. コミットメッセージを生成
|
||||
|
||||
変更を分析し、Conventional Commits 形式のコミットを作成する:
|
||||
|
||||
**形式:**
|
||||
```
|
||||
[type]: Brief summary (max 72 characters)
|
||||
|
||||
- Key change 1
|
||||
- Key change 2
|
||||
- Key change 3
|
||||
```
|
||||
|
||||
**Types:** `feat`、`fix`、`docs`、`style`、`refactor`、`test`、`chore`、`perf`、`build`、`ci`
|
||||
|
||||
**例:**
|
||||
```
|
||||
docs: Update concept README files with comprehensive documentation
|
||||
|
||||
- Add architecture diagrams and tables
|
||||
- Include practical examples
|
||||
- Expand best practices sections
|
||||
```
|
||||
|
||||
### 6. コミットと push
|
||||
|
||||
```bash
|
||||
git commit -m "$(cat <<'EOF'
|
||||
[Generated commit message]
|
||||
EOF
|
||||
)"
|
||||
git push # 失敗時: git pull --rebase && git push
|
||||
git log -1 --oneline --decorate # 確認
|
||||
```
|
||||
|
||||
### 7. 成功を通知
|
||||
|
||||
```
|
||||
✅ Successfully pushed to remote!
|
||||
|
||||
Commit: [hash] [message]
|
||||
Branch: [branch] → origin/[branch]
|
||||
Files changed: X (+insertions, -deletions)
|
||||
```
|
||||
|
||||
## エラーハンドリング
|
||||
|
||||
- **git add 失敗**: 権限、ロックされたファイル、リポジトリ初期化済みかを確認
|
||||
- **git commit 失敗**: pre-commit フックを修正、git config(user.name/email)を確認
|
||||
- **git push 失敗**:
|
||||
- non-fast-forward: `git pull --rebase && git push`
|
||||
- リモートブランチなし: `git push -u origin [branch]`
|
||||
- 保護ブランチ: PR ワークフローを使う
|
||||
|
||||
## 使うべきとき
|
||||
|
||||
✅ **適している場面:**
|
||||
- 複数ファイルにまたがるドキュメント更新
|
||||
- テストとドキュメントを伴う機能追加
|
||||
- 複数ファイルにまたがるバグ修正
|
||||
- プロジェクト全体のフォーマット/リファクタリング
|
||||
- 設定変更
|
||||
|
||||
❌ **避けるべき場面:**
|
||||
- 何をコミットするか不明確
|
||||
- シークレット/機密データを含む
|
||||
- レビューなしの保護ブランチ
|
||||
- マージ競合がある
|
||||
- 粒度の細かいコミット履歴を残したい
|
||||
- pre-commit フックが失敗している
|
||||
|
||||
## 代替案
|
||||
|
||||
ユーザーがより細かく制御したい場合は次を提案する:
|
||||
1. **選択的ステージング**: 特定ファイルをレビュー/ステージング
|
||||
2. **インタラクティブステージング**: パッチ単位の選択に `git add -p`
|
||||
3. **PR ワークフロー**: ブランチを作成 → push → PR(`/pr` コマンドを使う)
|
||||
|
||||
**⚠️ 注意**: push する前に必ず変更を確認する。迷ったら、より細かい制御のため個別の git コマンドを使う。
|
||||
|
||||
---
|
||||
**Last Updated**: April 9, 2026
|
||||
@@ -0,0 +1,32 @@
|
||||
<!-- i18n-source: 01-slash-commands/setup-ci-cd.md -->
|
||||
<!-- i18n-source-sha: 7f2e773 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: Setup CI/CD Pipeline
|
||||
description: 品質保証のための pre-commit フックと GitHub Actions を導入する
|
||||
tags: ci-cd, devops, automation
|
||||
---
|
||||
|
||||
# CI/CD パイプラインのセットアップ
|
||||
|
||||
プロジェクトの種類に応じて、包括的な DevOps の品質ゲートを導入する:
|
||||
|
||||
1. **プロジェクトを分析**: 言語、フレームワーク、ビルドシステム、既存ツールを検出する
|
||||
2. **言語別ツールで pre-commit フックを設定する**:
|
||||
- フォーマッタ: Prettier/Black/gofmt/rustfmt など
|
||||
- リンタ: ESLint/Ruff/golangci-lint/Clippy など
|
||||
- セキュリティ: Bandit/gosec/cargo-audit/npm audit など
|
||||
- 型チェック: TypeScript/mypy/flow(該当する場合)
|
||||
- テスト: 関連するテストスイートを実行する
|
||||
3. **GitHub Actions ワークフローを作成する**(.github/workflows/):
|
||||
- push/PR 時に pre-commit と同じチェックを実行する
|
||||
- 複数バージョン/プラットフォームのマトリクス(該当する場合)
|
||||
- ビルドとテストの検証
|
||||
- デプロイ手順(必要な場合)
|
||||
4. **パイプラインを検証する**: ローカルで動作確認し、テスト用 PR を作成し、全チェックの通過を確認する
|
||||
|
||||
無料・オープンソースのツールを使う。既存の設定を尊重する。実行時間は短く保つ。
|
||||
|
||||
---
|
||||
**Last Updated**: April 9, 2026
|
||||
@@ -0,0 +1,32 @@
|
||||
<!-- i18n-source: 01-slash-commands/unit-test-expand.md -->
|
||||
<!-- i18n-source-sha: 7f2e773 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: Expand Unit Tests
|
||||
description: 未テストの分岐やエッジケースを狙ってテストカバレッジを高める
|
||||
tags: testing, coverage, unit-tests
|
||||
---
|
||||
|
||||
# ユニットテストの拡充
|
||||
|
||||
プロジェクトのテストフレームワークに合わせて、既存のユニットテストを拡充する:
|
||||
|
||||
1. **カバレッジを分析**: カバレッジレポートを実行し、未テストの分岐、エッジケース、低カバレッジ領域を特定する
|
||||
2. **ギャップを特定**: コードを見直し、論理分岐、エラー経路、境界条件、null/空入力を確認する
|
||||
3. **プロジェクトのフレームワークでテストを書く**:
|
||||
- Jest/Vitest/Mocha(JavaScript/TypeScript)
|
||||
- pytest/unittest(Python)
|
||||
- Go testing/testify(Go)
|
||||
- Rust のテストフレームワーク(Rust)
|
||||
4. **特定のシナリオを狙う**:
|
||||
- エラーハンドリングと例外
|
||||
- 境界値(最小/最大、空、null)
|
||||
- エッジケース・コーナーケース
|
||||
- 状態遷移と副作用
|
||||
5. **改善を確認**: 再度カバレッジを計測し、計測可能な向上を確認する
|
||||
|
||||
新しく追加したテストコードのみを提示する。既存のテストパターンと命名規則に従う。
|
||||
|
||||
---
|
||||
**Last Updated**: April 9, 2026
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,68 @@
|
||||
<!-- i18n-source: 02-memory/directory-api-CLAUDE.md -->
|
||||
<!-- i18n-source-sha: 7f2e773 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
# API モジュール標準
|
||||
|
||||
このファイルは /src/api/ 配下のすべてに対し、ルートの CLAUDE.md を上書きする。
|
||||
|
||||
## API 固有の標準
|
||||
|
||||
### リクエスト検証
|
||||
- スキーマ検証には Zod を使う
|
||||
- 入力は必ず検証する
|
||||
- 検証エラー時は 400 を返す
|
||||
- フィールド単位のエラー詳細を含める
|
||||
|
||||
### 認証
|
||||
- すべてのエンドポイントで JWT トークンを必須とする
|
||||
- トークンは Authorization ヘッダに付ける
|
||||
- トークンの有効期限は 24 時間
|
||||
- リフレッシュトークン機構を実装する
|
||||
|
||||
### レスポンス形式
|
||||
|
||||
すべてのレスポンスは次の構造に従う:
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": { /* actual data */ },
|
||||
"timestamp": "2025-11-06T10:30:00Z",
|
||||
"version": "1.0"
|
||||
}
|
||||
```
|
||||
|
||||
エラーレスポンス:
|
||||
```json
|
||||
{
|
||||
"success": false,
|
||||
"error": {
|
||||
"code": "VALIDATION_ERROR",
|
||||
"message": "User message",
|
||||
"details": { /* field errors */ }
|
||||
},
|
||||
"timestamp": "2025-11-06T10:30:00Z"
|
||||
}
|
||||
```
|
||||
|
||||
### ページネーション
|
||||
- カーソルベースページネーションを使う(オフセット方式は使わない)
|
||||
- `hasMore` の真偽値を含める
|
||||
- 1 ページの最大サイズは 100 まで
|
||||
- デフォルトのページサイズ: 20
|
||||
|
||||
### レート制限
|
||||
- 認証済みユーザー: 1 時間あたり 1000 リクエスト
|
||||
- 公開エンドポイント: 1 時間あたり 100 リクエスト
|
||||
- 上限超過時は 429 を返す
|
||||
- retry-after ヘッダを付ける
|
||||
|
||||
### キャッシュ
|
||||
- セッションキャッシュには Redis を使う
|
||||
- キャッシュ期間: デフォルト 5 分
|
||||
- 書き込み操作時に無効化する
|
||||
- キャッシュキーにリソース種別のタグを付ける
|
||||
|
||||
---
|
||||
**Last Updated**: April 9, 2026
|
||||
@@ -0,0 +1,67 @@
|
||||
<!-- i18n-source: 02-memory/personal-CLAUDE.md -->
|
||||
<!-- i18n-source-sha: 7f2e773 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
# 開発上の好み
|
||||
|
||||
## プロフィール
|
||||
- **経験年数**: フルスタック開発 8 年
|
||||
- **得意な言語**: TypeScript、Python
|
||||
- **コミュニケーションスタイル**: 例を示しながら端的に
|
||||
- **学び方**: 視覚的な図解 + コード
|
||||
|
||||
## コードに関する好み
|
||||
|
||||
### エラーハンドリング
|
||||
try-catch ブロックと意味のあるエラーメッセージで、明示的にエラーを扱うのを好む。
|
||||
汎用的なエラーは避ける。デバッグのため必ずエラーをログに残す。
|
||||
|
||||
### コメント
|
||||
コメントは「なぜ(WHY)」を書く。「なに(WHAT)」ではない。コードはそれ自身がドキュメントであるべき。
|
||||
ビジネスロジックや自明でない判断についてコメントで説明する。
|
||||
|
||||
### テスト
|
||||
TDD(テスト駆動開発)を好む。
|
||||
先にテストを書き、その後で実装する。
|
||||
実装の詳細ではなく、振る舞いに焦点を当てる。
|
||||
|
||||
### アーキテクチャ
|
||||
モジュール化された疎結合の設計を好む。
|
||||
テスト容易性のため依存性注入を使う。
|
||||
関心を分離する(Controllers、Services、Repositories)。
|
||||
|
||||
## デバッグの好み
|
||||
- console.log にプレフィックスを付ける: `[DEBUG]`
|
||||
- コンテキストを含める: 関数名、関連変数
|
||||
- 利用可能ならスタックトレースを使う
|
||||
- ログには必ずタイムスタンプを含める
|
||||
|
||||
## コミュニケーション
|
||||
- 複雑な概念は図で説明する
|
||||
- 理論より先に具体例を示す
|
||||
- 変更前/変更後のコードスニペットを含める
|
||||
- 最後に要点をまとめる
|
||||
|
||||
## プロジェクト構成
|
||||
プロジェクトは次のように整理する:
|
||||
```
|
||||
project/
|
||||
├── src/
|
||||
│ ├── api/
|
||||
│ ├── services/
|
||||
│ ├── models/
|
||||
│ └── utils/
|
||||
├── tests/
|
||||
├── docs/
|
||||
└── docker/
|
||||
```
|
||||
|
||||
## ツール
|
||||
- **IDE**: VS Code(vim キーバインド)
|
||||
- **ターミナル**: Zsh + Oh-My-Zsh
|
||||
- **フォーマッタ**: Prettier(行長 100 文字)
|
||||
- **リンタ**: ESLint(airbnb config)
|
||||
- **テストフレームワーク**: Jest + React Testing Library
|
||||
|
||||
---
|
||||
**Last Updated**: April 9, 2026
|
||||
@@ -0,0 +1,95 @@
|
||||
<!-- i18n-source: 02-memory/project-CLAUDE.md -->
|
||||
<!-- i18n-source-sha: 7f2e773 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
# プロジェクト設定
|
||||
|
||||
## プロジェクト概要
|
||||
- **名称**: E コマースプラットフォーム
|
||||
- **技術スタック**: Node.js、PostgreSQL、React 18、Docker
|
||||
- **チーム規模**: 開発者 5 名
|
||||
- **デッドライン**: 2025 年第 4 四半期
|
||||
|
||||
## アーキテクチャ
|
||||
@docs/architecture.md
|
||||
@docs/api-standards.md
|
||||
@docs/database-schema.md
|
||||
|
||||
## 開発標準
|
||||
|
||||
### コードスタイル
|
||||
- フォーマットには Prettier を使う
|
||||
- ESLint(airbnb config)を使う
|
||||
- 1 行の最大長: 100 文字
|
||||
- インデント: スペース 2 個
|
||||
|
||||
### 命名規則
|
||||
- **ファイル**: kebab-case(user-controller.js)
|
||||
- **クラス**: PascalCase(UserService)
|
||||
- **関数/変数**: camelCase(getUserById)
|
||||
- **定数**: UPPER_SNAKE_CASE(API_BASE_URL)
|
||||
- **データベーステーブル**: snake_case(user_accounts)
|
||||
|
||||
### Git ワークフロー
|
||||
- ブランチ名: `feature/description` または `fix/description`
|
||||
- コミットメッセージ: Conventional Commits に従う
|
||||
- マージ前に PR が必要
|
||||
- すべての CI/CD チェックを通す
|
||||
- 最低 1 名の承認が必要
|
||||
|
||||
### テスト要件
|
||||
- コードカバレッジ最低 80%
|
||||
- すべての主要パスにテストが必要
|
||||
- ユニットテストには Jest を使う
|
||||
- E2E テストには Cypress を使う
|
||||
- テストファイル名: `*.test.ts` または `*.spec.ts`
|
||||
|
||||
### API 標準
|
||||
- RESTful エンドポイントのみ
|
||||
- リクエスト/レスポンスは JSON
|
||||
- HTTP ステータスコードを正しく使う
|
||||
- API はバージョン付きエンドポイント: `/api/v1/`
|
||||
- 全エンドポイントに例付きドキュメントを用意する
|
||||
|
||||
### データベース
|
||||
- スキーマ変更にはマイグレーションを使う
|
||||
- 認証情報をハードコードしない
|
||||
- コネクションプーリングを使う
|
||||
- 開発環境ではクエリログを有効化する
|
||||
- 定期的なバックアップを必須とする
|
||||
|
||||
### デプロイ
|
||||
- Docker ベースのデプロイ
|
||||
- Kubernetes によるオーケストレーション
|
||||
- Blue-Green デプロイ戦略
|
||||
- 失敗時は自動ロールバック
|
||||
- データベースマイグレーションはデプロイ前に実行する
|
||||
|
||||
## よく使うコマンド
|
||||
|
||||
| コマンド | 用途 |
|
||||
|---------|------|
|
||||
| `npm run dev` | 開発サーバを起動 |
|
||||
| `npm test` | テストスイートを実行 |
|
||||
| `npm run lint` | コードスタイルを確認 |
|
||||
| `npm run build` | 本番向けビルド |
|
||||
| `npm run migrate` | データベースマイグレーションを実行 |
|
||||
|
||||
## チーム連絡先
|
||||
- Tech Lead: Sarah Chen (@sarah.chen)
|
||||
- Product Manager: Mike Johnson (@mike.j)
|
||||
- DevOps: Alex Kim (@alex.k)
|
||||
|
||||
## 既知の問題と回避策
|
||||
- ピーク時、PostgreSQL のコネクションプールが 20 に制限される
|
||||
- 回避策: クエリのキューイングを実装する
|
||||
- Safari 14 で async generator の互換性問題
|
||||
- 回避策: Babel トランスパイラを使う
|
||||
|
||||
## 関連プロジェクト
|
||||
- Analytics Dashboard: `/projects/analytics`
|
||||
- Mobile App: `/projects/mobile`
|
||||
- Admin Panel: `/projects/admin`
|
||||
|
||||
---
|
||||
**Last Updated**: April 9, 2026
|
||||
@@ -0,0 +1,832 @@
|
||||
<!-- i18n-source: 03-skills/README.md -->
|
||||
<!-- i18n-source-sha: 8e1f60f -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="../../resources/logos/claude-howto-logo-dark.svg">
|
||||
<img alt="Claude How To" src="../../resources/logos/claude-howto-logo.svg">
|
||||
</picture>
|
||||
|
||||
# Agent Skills ガイド
|
||||
|
||||
Agent Skills は、Claude の機能を拡張する再利用可能でファイルシステムベースの能力である。ドメイン固有の専門知識、ワークフロー、ベストプラクティスを、関連性に応じて Claude が自動的に利用できる発見可能なコンポーネントへとパッケージ化する。
|
||||
|
||||
## 概要
|
||||
|
||||
**Agent Skills** は汎用エージェントを専門家へと変貌させるモジュール化された能力である。プロンプト(単発タスク向けの会話レベルの指示)と異なり、スキルは必要に応じてロードされ、複数の会話にわたって同じガイダンスを繰り返し提供する必要をなくす。
|
||||
|
||||
### 主なメリット
|
||||
|
||||
- **Claude を専門化**: ドメイン固有のタスク向けに能力を仕立てる
|
||||
- **繰り返しの削減**: 一度作成すれば、会話をまたいで自動的に利用される
|
||||
- **能力の組み合わせ**: スキルを組み合わせて複雑なワークフローを構築できる
|
||||
- **ワークフローのスケール**: 複数のプロジェクトやチームでスキルを再利用できる
|
||||
- **品質の維持**: ベストプラクティスをワークフローへ直接埋め込める
|
||||
|
||||
スキルは [Agent Skills](https://agentskills.io) のオープン標準に準拠しており、複数の AI ツールで動作する。Claude Code は、呼び出し制御、サブエージェント実行、動的コンテキスト注入といった追加機能で標準を拡張している。
|
||||
|
||||
> **Note**: カスタムスラッシュコマンドはスキルへ統合された。`.claude/commands/` 内のファイルは引き続き動作し、同じフロントマターフィールドをサポートする。新規開発ではスキルが推奨される。同一パスに両方が存在する場合(例: `.claude/commands/review.md` と `.claude/skills/review/SKILL.md`)、スキルが優先される。
|
||||
|
||||
## スキルの仕組み: プログレッシブディスクロージャ
|
||||
|
||||
スキルは **プログレッシブディスクロージャ** アーキテクチャを活用する。Claude は事前に全てを消費するのではなく、必要に応じて段階的に情報をロードする。これにより、無制限のスケーラビリティを保ちつつ効率的なコンテキスト管理が可能となる。
|
||||
|
||||
### 3 段階のロード
|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph "Level 1: Metadata (Always Loaded)"
|
||||
A["YAML Frontmatter"]
|
||||
A1["~100 tokens per skill"]
|
||||
A2["name + description"]
|
||||
end
|
||||
|
||||
subgraph "Level 2: Instructions (When Triggered)"
|
||||
B["SKILL.md Body"]
|
||||
B1["Under 5k tokens"]
|
||||
B2["Workflows & guidance"]
|
||||
end
|
||||
|
||||
subgraph "Level 3: Resources (As Needed)"
|
||||
C["Bundled Files"]
|
||||
C1["Effectively unlimited"]
|
||||
C2["Scripts, templates, docs"]
|
||||
end
|
||||
|
||||
A --> B
|
||||
B --> C
|
||||
```
|
||||
|
||||
| レベル | ロードされるタイミング | トークンコスト | 内容 |
|
||||
|-------|------------|------------|---------|
|
||||
| **Level 1: メタデータ** | 常時(起動時) | スキルあたり約 100 トークン | YAML フロントマターの `name` と `description` |
|
||||
| **Level 2: 命令** | スキルがトリガーされたとき | 5k トークン未満 | SKILL.md 本文の指示とガイダンス |
|
||||
| **Level 3+: リソース** | 必要に応じて | 実質無制限 | bash 経由で実行されるバンドル済みファイル(コンテンツはコンテキストにロードされない) |
|
||||
|
||||
つまり、コンテキストにペナルティを与えずに多数のスキルをインストールできる。Claude は、実際にトリガーされるまでは各スキルの存在と用途しか知らない。
|
||||
|
||||
## スキルのロードプロセス
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant User
|
||||
participant Claude
|
||||
participant System
|
||||
participant SkillInst as Skill Instructions
|
||||
participant SkillRes as Skill Resources
|
||||
|
||||
User->>Claude: "Review this code for security issues"
|
||||
Claude->>System: Check available skills (metadata)
|
||||
System-->>Claude: Skill descriptions loaded at startup
|
||||
Claude->>Claude: Match request to skill description
|
||||
Claude->>SkillInst: Read code-review/SKILL.md
|
||||
SkillInst-->>Claude: Level 2: Instructions loaded
|
||||
Claude->>Claude: Determine: Need templates?
|
||||
Claude->>SkillRes: Read templates/checklist.md
|
||||
SkillRes-->>Claude: Level 3: Template loaded
|
||||
Claude->>Claude: Execute skill instructions
|
||||
Claude->>User: Comprehensive code review
|
||||
```
|
||||
|
||||
## スキルの種類と配置場所
|
||||
|
||||
| 種類 | 配置場所 | スコープ | 共有 | 適した用途 |
|
||||
|------|----------|-------|--------|----------|
|
||||
| **Enterprise** | 管理対象設定 | 組織内全ユーザー | あり | 組織全体の標準 |
|
||||
| **Personal** | `~/.claude/skills/<skill-name>/SKILL.md` | 個人 | なし | 個人のワークフロー |
|
||||
| **Project** | `.claude/skills/<skill-name>/SKILL.md` | チーム | あり(git 経由) | チームの標準 |
|
||||
| **Plugin** | `<plugin>/skills/<skill-name>/SKILL.md` | 有効化された範囲 | プラグインに依存 | プラグインへのバンドル |
|
||||
|
||||
スキル名がレベル間で重複する場合、優先度の高い配置場所が優先される: **enterprise > personal > project**。プラグインスキルは `plugin-name:skill-name` の名前空間を用いるため衝突しない。
|
||||
|
||||
### 自動検出
|
||||
|
||||
**ネストされたディレクトリ**: サブディレクトリ内のファイルを扱う際、Claude Code はネストされた `.claude/skills/` ディレクトリからスキルを自動的に検出する。例えば `packages/frontend/` 内のファイルを編集中の場合、Claude Code は `packages/frontend/.claude/skills/` 内のスキルも探す。これは、パッケージごとに独自のスキルを持つモノレポ構成をサポートする。
|
||||
|
||||
**`--add-dir` ディレクトリ**: `--add-dir` で追加されたディレクトリのスキルは、変更のライブ検出を伴って自動的にロードされる。それらのディレクトリ内のスキルファイルへの編集は、Claude Code を再起動せずに直ちに反映される。
|
||||
|
||||
**description のバジェット**: スキルの説明(Level 1 メタデータ)は **コンテキストウィンドウの 1 %** が上限となる(フォールバック: **8,000 文字**)。多数のスキルをインストールしている場合、説明が短縮されることがある。スキル名は常に含まれるが、説明は容量に合わせて切り詰められる。説明では主要なユースケースを冒頭に置くこと。バジェットは環境変数 `SLASH_COMMAND_TOOL_CHAR_BUDGET` で上書きできる。
|
||||
|
||||
## カスタムスキルの作成
|
||||
|
||||
### 基本ディレクトリ構造
|
||||
|
||||
```
|
||||
my-skill/
|
||||
├── SKILL.md # メイン命令(必須)
|
||||
├── template.md # Claude が埋めるテンプレート
|
||||
├── examples/
|
||||
│ └── sample.md # 期待される形式を示す出力例
|
||||
└── scripts/
|
||||
└── validate.sh # Claude が実行できるスクリプト
|
||||
```
|
||||
|
||||
### SKILL.md の形式
|
||||
|
||||
```yaml
|
||||
---
|
||||
name: your-skill-name
|
||||
description: Brief description of what this Skill does and when to use it
|
||||
---
|
||||
|
||||
# Your Skill Name
|
||||
|
||||
## Instructions
|
||||
Provide clear, step-by-step guidance for Claude.
|
||||
|
||||
## Examples
|
||||
Show concrete examples of using this Skill.
|
||||
```
|
||||
|
||||
### 必須フィールド
|
||||
|
||||
- **name**: 小文字、数字、ハイフンのみ(最大 64 文字)。"anthropic" や "claude" を含めることはできない。
|
||||
- **description**: スキルが何をするかと、いつ使うか(最大 1024 文字)。Claude がスキルを発火させるべきタイミングを判断する上で重要である。
|
||||
|
||||
### オプションのフロントマターフィールド
|
||||
|
||||
```yaml
|
||||
---
|
||||
name: my-skill
|
||||
description: What this skill does and when to use it
|
||||
argument-hint: "[filename] [format]" # 自動補完用ヒント
|
||||
disable-model-invocation: true # ユーザーのみ呼び出し可
|
||||
user-invocable: false # スラッシュメニューから非表示
|
||||
allowed-tools: Read, Grep, Glob # ツールアクセスの制限
|
||||
model: opus # 使用するモデルの指定
|
||||
effort: high # 努力レベルの上書き(low, medium, high, max)
|
||||
context: fork # 隔離されたサブエージェントで実行
|
||||
agent: Explore # エージェントタイプ(context: fork と併用)
|
||||
shell: bash # コマンドのシェル: bash(既定)または powershell
|
||||
hooks: # スキルスコープのフック
|
||||
PreToolUse:
|
||||
- matcher: "Bash"
|
||||
hooks:
|
||||
- type: command
|
||||
command: "./scripts/validate.sh"
|
||||
paths: "src/api/**/*.ts" # スキルの発火を制限する glob パターン
|
||||
---
|
||||
```
|
||||
|
||||
| フィールド | 説明 |
|
||||
|-------|-------------|
|
||||
| `name` | 小文字、数字、ハイフンのみ(最大 64 文字)。"anthropic" や "claude" を含められない。 |
|
||||
| `description` | スキルが何をするかと、いつ使うか(最大 1024 文字)。自動呼び出しのマッチングに重要。 |
|
||||
| `argument-hint` | `/` の自動補完メニューに表示されるヒント(例: `"[filename] [format]"`)。 |
|
||||
| `disable-model-invocation` | `true` = ユーザーのみが `/name` で呼び出せる。Claude は自動呼び出ししない。 |
|
||||
| `user-invocable` | `false` = `/` メニューから非表示。Claude のみが自動呼び出し可能。 |
|
||||
| `allowed-tools` | 許可プロンプトなしでスキルが利用可能なツールのカンマ区切りリスト。 |
|
||||
| `model` | スキルが有効な間のモデルの上書き(例: `opus`, `sonnet`)。 |
|
||||
| `effort` | スキルが有効な間の努力レベルの上書き: `low`, `medium`, `high`, `max`。 |
|
||||
| `context` | `fork` を指定するとスキルを独自のコンテキストウィンドウを持つフォーク済みサブエージェントコンテキストで実行する。 |
|
||||
| `agent` | `context: fork` の際のサブエージェントタイプ(例: `Explore`, `Plan`, `general-purpose`)。 |
|
||||
| `shell` | `!`command`` 置換とスクリプトに使うシェル: `bash`(既定)または `powershell`。 |
|
||||
| `hooks` | このスキルのライフサイクルにスコープされたフック(グローバルフックと同じ形式)。 |
|
||||
| `paths` | スキルが自動発火する条件を制限する glob パターン。カンマ区切り文字列または YAML リスト。パス固有ルールと同じ形式。 |
|
||||
|
||||
## スキルのコンテンツの種類
|
||||
|
||||
スキルは目的に応じて 2 種類のコンテンツを含むことができる。
|
||||
|
||||
### リファレンスコンテンツ
|
||||
|
||||
現在の作業に Claude が適用する知識を追加する。規約、パターン、スタイルガイド、ドメイン知識など。会話のコンテキストとインラインで動作する。
|
||||
|
||||
```yaml
|
||||
---
|
||||
name: api-conventions
|
||||
description: API design patterns for this codebase
|
||||
---
|
||||
|
||||
When writing API endpoints:
|
||||
- Use RESTful naming conventions
|
||||
- Return consistent error formats
|
||||
- Include request validation
|
||||
```
|
||||
|
||||
### タスクコンテンツ
|
||||
|
||||
特定のアクションを行うステップバイステップの命令。`/skill-name` で直接呼び出されることが多い。
|
||||
|
||||
```yaml
|
||||
---
|
||||
name: deploy
|
||||
description: Deploy the application to production
|
||||
context: fork
|
||||
disable-model-invocation: true
|
||||
---
|
||||
|
||||
Deploy the application:
|
||||
1. Run the test suite
|
||||
2. Build the application
|
||||
3. Push to the deployment target
|
||||
```
|
||||
|
||||
## スキルの呼び出し制御
|
||||
|
||||
既定では、ユーザーも Claude もどのスキルでも呼び出せる。2 つのフロントマターフィールドが 3 つの呼び出しモードを制御する。
|
||||
|
||||
| フロントマター | ユーザー呼び出し | Claude 呼び出し |
|
||||
|---|---|---|
|
||||
| (既定) | 可 | 可 |
|
||||
| `disable-model-invocation: true` | 可 | 不可 |
|
||||
| `user-invocable: false` | 不可 | 可 |
|
||||
|
||||
**`disable-model-invocation: true` を使うべき場面**: 副作用のあるワークフロー(`/commit`, `/deploy`, `/send-slack-message`)。コードが整って見えるからといって Claude が勝手にデプロイすることは望まれない。
|
||||
|
||||
**`user-invocable: false` を使うべき場面**: コマンドとして実行可能ではない背景知識。`legacy-system-context` のようなスキルは古いシステムの仕組みを説明するもので、Claude には有用だがユーザーにとって意味のあるアクションではない。
|
||||
|
||||
## 文字列置換
|
||||
|
||||
スキルは、コンテンツが Claude に届く前に解決される動的な値をサポートする。
|
||||
|
||||
| 変数 | 説明 |
|
||||
|----------|-------------|
|
||||
| `$ARGUMENTS` | スキル呼び出し時に渡された全引数 |
|
||||
| `$ARGUMENTS[N]` または `$N` | インデックス(0 始まり)で特定の引数にアクセス |
|
||||
| `${CLAUDE_SESSION_ID}` | 現在のセッション ID |
|
||||
| `${CLAUDE_SKILL_DIR}` | スキルの SKILL.md ファイルを含むディレクトリ |
|
||||
| `` !`command` `` | 動的コンテキスト注入 — シェルコマンドを実行し出力をインライン化する |
|
||||
|
||||
**例:**
|
||||
|
||||
```yaml
|
||||
---
|
||||
name: fix-issue
|
||||
description: Fix a GitHub issue
|
||||
---
|
||||
|
||||
Fix GitHub issue $ARGUMENTS following our coding standards.
|
||||
1. Read the issue description
|
||||
2. Implement the fix
|
||||
3. Write tests
|
||||
4. Create a commit
|
||||
```
|
||||
|
||||
`/fix-issue 123` を実行すると `$ARGUMENTS` が `123` に置換される。
|
||||
|
||||
## 動的コンテキストの注入
|
||||
|
||||
`!`command`` 構文は、スキルコンテンツが Claude に送信される前にシェルコマンドを実行する。
|
||||
|
||||
```yaml
|
||||
---
|
||||
name: pr-summary
|
||||
description: Summarize changes in a pull request
|
||||
context: fork
|
||||
agent: Explore
|
||||
---
|
||||
|
||||
## Pull request context
|
||||
- PR diff: !`gh pr diff`
|
||||
- PR comments: !`gh pr view --comments`
|
||||
- Changed files: !`gh pr diff --name-only`
|
||||
|
||||
## Your task
|
||||
Summarize this pull request...
|
||||
```
|
||||
|
||||
コマンドは即座に実行され、Claude には最終出力のみが見える。既定では `bash` で実行される。フロントマターで `shell: powershell` を設定すれば PowerShell を使える。
|
||||
|
||||
## サブエージェント内でのスキル実行
|
||||
|
||||
スキルに `context: fork` を追加すると、隔離されたサブエージェントコンテキストで実行される。スキルのコンテンツが、独自のコンテキストウィンドウを持つ専用サブエージェントへのタスクとなり、メインの会話を散らかさない。
|
||||
|
||||
`agent` フィールドはどのエージェントタイプを使うかを指定する。
|
||||
|
||||
| エージェントタイプ | 適した用途 |
|
||||
|---|---|
|
||||
| `Explore` | 読み取り専用のリサーチ、コードベース解析 |
|
||||
| `Plan` | 実装プランの作成 |
|
||||
| `general-purpose` | 全ツールが必要な広範なタスク |
|
||||
| カスタムエージェント | 設定で定義された専門エージェント |
|
||||
|
||||
**フロントマターの例:**
|
||||
|
||||
```yaml
|
||||
---
|
||||
context: fork
|
||||
agent: Explore
|
||||
---
|
||||
```
|
||||
|
||||
**完全なスキル例:**
|
||||
|
||||
```yaml
|
||||
---
|
||||
name: deep-research
|
||||
description: Research a topic thoroughly
|
||||
context: fork
|
||||
agent: Explore
|
||||
---
|
||||
|
||||
Research $ARGUMENTS thoroughly:
|
||||
1. Find relevant files using Glob and Grep
|
||||
2. Read and analyze the code
|
||||
3. Summarize findings with specific file references
|
||||
```
|
||||
|
||||
## 実用例
|
||||
|
||||
### 例 1: コードレビュースキル
|
||||
|
||||
**ディレクトリ構造:**
|
||||
|
||||
```
|
||||
~/.claude/skills/code-review/
|
||||
├── SKILL.md
|
||||
├── templates/
|
||||
│ ├── review-checklist.md
|
||||
│ └── finding-template.md
|
||||
└── scripts/
|
||||
├── analyze-metrics.py
|
||||
└── compare-complexity.py
|
||||
```
|
||||
|
||||
**ファイル:** `~/.claude/skills/code-review/SKILL.md`
|
||||
|
||||
```yaml
|
||||
---
|
||||
name: code-review-specialist
|
||||
description: Comprehensive code review with security, performance, and quality analysis. Use when users ask to review code, analyze code quality, evaluate pull requests, or mention code review, security analysis, or performance optimization.
|
||||
---
|
||||
|
||||
# Code Review Skill
|
||||
|
||||
This skill provides comprehensive code review capabilities focusing on:
|
||||
|
||||
1. **Security Analysis**
|
||||
- Authentication/authorization issues
|
||||
- Data exposure risks
|
||||
- Injection vulnerabilities
|
||||
- Cryptographic weaknesses
|
||||
|
||||
2. **Performance Review**
|
||||
- Algorithm efficiency (Big O analysis)
|
||||
- Memory optimization
|
||||
- Database query optimization
|
||||
- Caching opportunities
|
||||
|
||||
3. **Code Quality**
|
||||
- SOLID principles
|
||||
- Design patterns
|
||||
- Naming conventions
|
||||
- Test coverage
|
||||
|
||||
4. **Maintainability**
|
||||
- Code readability
|
||||
- Function size (should be < 50 lines)
|
||||
- Cyclomatic complexity
|
||||
- Type safety
|
||||
|
||||
## Review Template
|
||||
|
||||
For each piece of code reviewed, provide:
|
||||
|
||||
### Summary
|
||||
- Overall quality assessment (1-5)
|
||||
- Key findings count
|
||||
- Recommended priority areas
|
||||
|
||||
### Critical Issues (if any)
|
||||
- **Issue**: Clear description
|
||||
- **Location**: File and line number
|
||||
- **Impact**: Why this matters
|
||||
- **Severity**: Critical/High/Medium
|
||||
- **Fix**: Code example
|
||||
|
||||
For detailed checklists, see [templates/review-checklist.md](templates/review-checklist.md).
|
||||
```
|
||||
|
||||
### 例 2: コードベース可視化スキル
|
||||
|
||||
インタラクティブな HTML 可視化を生成するスキル。
|
||||
|
||||
**ディレクトリ構造:**
|
||||
|
||||
```
|
||||
~/.claude/skills/codebase-visualizer/
|
||||
├── SKILL.md
|
||||
└── scripts/
|
||||
└── visualize.py
|
||||
```
|
||||
|
||||
**ファイル:** `~/.claude/skills/codebase-visualizer/SKILL.md`
|
||||
|
||||
````yaml
|
||||
---
|
||||
name: codebase-visualizer
|
||||
description: Generate an interactive collapsible tree visualization of your codebase. Use when exploring a new repo, understanding project structure, or identifying large files.
|
||||
allowed-tools: Bash(python *)
|
||||
---
|
||||
|
||||
# Codebase Visualizer
|
||||
|
||||
Generate an interactive HTML tree view showing your project's file structure.
|
||||
|
||||
## Usage
|
||||
|
||||
Run the visualization script from your project root:
|
||||
|
||||
```bash
|
||||
python ~/.claude/skills/codebase-visualizer/scripts/visualize.py .
|
||||
```
|
||||
|
||||
This creates `codebase-map.html` and opens it in your default browser.
|
||||
|
||||
## What the visualization shows
|
||||
|
||||
- **Collapsible directories**: Click folders to expand/collapse
|
||||
- **File sizes**: Displayed next to each file
|
||||
- **Colors**: Different colors for different file types
|
||||
- **Directory totals**: Shows aggregate size of each folder
|
||||
````
|
||||
|
||||
バンドルされた Python スクリプトが重い処理を担い、Claude はオーケストレーションを行う。
|
||||
|
||||
### 例 3: デプロイスキル(ユーザー呼び出し専用)
|
||||
|
||||
```yaml
|
||||
---
|
||||
name: deploy
|
||||
description: Deploy the application to production
|
||||
disable-model-invocation: true
|
||||
allowed-tools: Bash(npm *), Bash(git *)
|
||||
---
|
||||
|
||||
Deploy $ARGUMENTS to production:
|
||||
|
||||
1. Run the test suite: `npm test`
|
||||
2. Build the application: `npm run build`
|
||||
3. Push to the deployment target
|
||||
4. Verify the deployment succeeded
|
||||
5. Report deployment status
|
||||
```
|
||||
|
||||
### 例 4: ブランドボイススキル(背景知識)
|
||||
|
||||
```yaml
|
||||
---
|
||||
name: brand-voice
|
||||
description: Ensure all communication matches brand voice and tone guidelines. Use when creating marketing copy, customer communications, or public-facing content.
|
||||
user-invocable: false
|
||||
---
|
||||
|
||||
## Tone of Voice
|
||||
- **Friendly but professional** - approachable without being casual
|
||||
- **Clear and concise** - avoid jargon
|
||||
- **Confident** - we know what we're doing
|
||||
- **Empathetic** - understand user needs
|
||||
|
||||
## Writing Guidelines
|
||||
- Use "you" when addressing readers
|
||||
- Use active voice
|
||||
- Keep sentences under 20 words
|
||||
- Start with value proposition
|
||||
|
||||
For templates, see [templates/](templates/).
|
||||
```
|
||||
|
||||
### 例 5: CLAUDE.md ジェネレータースキル
|
||||
|
||||
```yaml
|
||||
---
|
||||
name: claude-md
|
||||
description: Create or update CLAUDE.md files following best practices for optimal AI agent onboarding. Use when users mention CLAUDE.md, project documentation, or AI onboarding.
|
||||
---
|
||||
|
||||
## Core Principles
|
||||
|
||||
**LLMs are stateless**: CLAUDE.md is the only file automatically included in every conversation.
|
||||
|
||||
### The Golden Rules
|
||||
|
||||
1. **Less is More**: Keep under 300 lines (ideally under 100)
|
||||
2. **Universal Applicability**: Only include information relevant to EVERY session
|
||||
3. **Don't Use Claude as a Linter**: Use deterministic tools instead
|
||||
4. **Never Auto-Generate**: Craft it manually with careful consideration
|
||||
|
||||
## Essential Sections
|
||||
|
||||
- **Project Name**: Brief one-line description
|
||||
- **Tech Stack**: Primary language, frameworks, database
|
||||
- **Development Commands**: Install, test, build commands
|
||||
- **Critical Conventions**: Only non-obvious, high-impact conventions
|
||||
- **Known Issues / Gotchas**: Things that trip up developers
|
||||
```
|
||||
|
||||
### 例 6: スクリプトを伴うリファクタリングスキル
|
||||
|
||||
**ディレクトリ構造:**
|
||||
|
||||
```
|
||||
refactor/
|
||||
├── SKILL.md
|
||||
├── references/
|
||||
│ ├── code-smells.md
|
||||
│ └── refactoring-catalog.md
|
||||
├── templates/
|
||||
│ └── refactoring-plan.md
|
||||
└── scripts/
|
||||
├── analyze-complexity.py
|
||||
└── detect-smells.py
|
||||
```
|
||||
|
||||
**ファイル:** `refactor/SKILL.md`
|
||||
|
||||
```yaml
|
||||
---
|
||||
name: code-refactor
|
||||
description: Systematic code refactoring based on Martin Fowler's methodology. Use when users ask to refactor code, improve code structure, reduce technical debt, or eliminate code smells.
|
||||
---
|
||||
|
||||
# Code Refactoring Skill
|
||||
|
||||
A phased approach emphasizing safe, incremental changes backed by tests.
|
||||
|
||||
## Workflow
|
||||
|
||||
Phase 1: Research & Analysis → Phase 2: Test Coverage Assessment →
|
||||
Phase 3: Code Smell Identification → Phase 4: Refactoring Plan Creation →
|
||||
Phase 5: Incremental Implementation → Phase 6: Review & Iteration
|
||||
|
||||
## Core Principles
|
||||
|
||||
1. **Behavior Preservation**: External behavior must remain unchanged
|
||||
2. **Small Steps**: Make tiny, testable changes
|
||||
3. **Test-Driven**: Tests are the safety net
|
||||
4. **Continuous**: Refactoring is ongoing, not a one-time event
|
||||
|
||||
For code smell catalog, see [references/code-smells.md](references/code-smells.md).
|
||||
For refactoring techniques, see [references/refactoring-catalog.md](references/refactoring-catalog.md).
|
||||
```
|
||||
|
||||
## 補助ファイル
|
||||
|
||||
スキルは `SKILL.md` 以外にも複数のファイルをディレクトリに含められる。これらの補助ファイル(テンプレート、例、スクリプト、リファレンスドキュメント)は、必要に応じて Claude がロードできる追加リソースを提供しつつ、メインのスキルファイルを焦点の絞られた状態に保つ。
|
||||
|
||||
```
|
||||
my-skill/
|
||||
├── SKILL.md # メイン命令(必須、500 行以下に保つ)
|
||||
├── templates/ # Claude が埋めるテンプレート
|
||||
│ └── output-format.md
|
||||
├── examples/ # 期待される形式を示す出力例
|
||||
│ └── sample-output.md
|
||||
├── references/ # ドメイン知識と仕様
|
||||
│ └── api-spec.md
|
||||
└── scripts/ # Claude が実行できるスクリプト
|
||||
└── validate.sh
|
||||
```
|
||||
|
||||
補助ファイルのガイドライン:
|
||||
|
||||
- `SKILL.md` は **500 行以下** に保つ。詳細なリファレンス、大きな例、仕様は別ファイルへ移す。
|
||||
- `SKILL.md` から追加ファイルを参照する際は **相対パス** を使う(例: `[API reference](references/api-spec.md)`)。
|
||||
- 補助ファイルは Level 3(必要に応じて)でロードされるため、Claude が実際に読むまではコンテキストを消費しない。
|
||||
|
||||
## スキルの管理
|
||||
|
||||
### 利用可能なスキルの確認
|
||||
|
||||
Claude に直接尋ねる:
|
||||
```
|
||||
What Skills are available?
|
||||
```
|
||||
|
||||
またはファイルシステムを確認する:
|
||||
```bash
|
||||
# 個人スキル一覧
|
||||
ls ~/.claude/skills/
|
||||
|
||||
# プロジェクトスキル一覧
|
||||
ls .claude/skills/
|
||||
```
|
||||
|
||||
### スキルのテスト
|
||||
|
||||
テスト方法は 2 種類ある。
|
||||
|
||||
**Claude に自動で呼び出させる**: 説明にマッチするものを聞く:
|
||||
```
|
||||
Can you help me review this code for security issues?
|
||||
```
|
||||
|
||||
**スキル名で直接呼び出す**:
|
||||
```
|
||||
/code-review src/auth/login.ts
|
||||
```
|
||||
|
||||
### スキルの更新
|
||||
|
||||
`SKILL.md` を直接編集する。変更は次回の Claude Code 起動時に反映される。
|
||||
|
||||
```bash
|
||||
# 個人スキル
|
||||
code ~/.claude/skills/my-skill/SKILL.md
|
||||
|
||||
# プロジェクトスキル
|
||||
code .claude/skills/my-skill/SKILL.md
|
||||
```
|
||||
|
||||
### Claude のスキルアクセス制限
|
||||
|
||||
Claude が呼び出せるスキルを制御する 3 つの方法。
|
||||
|
||||
**全スキルの無効化** は `/permissions` で:
|
||||
```
|
||||
# deny ルールに追加:
|
||||
Skill
|
||||
```
|
||||
|
||||
**特定のスキルを許可または拒否**:
|
||||
```
|
||||
# 特定スキルのみ許可
|
||||
Skill(commit)
|
||||
Skill(review-pr *)
|
||||
|
||||
# 特定スキルを拒否
|
||||
Skill(deploy *)
|
||||
```
|
||||
|
||||
**個別スキルの非表示** は、フロントマターに `disable-model-invocation: true` を追加する。
|
||||
|
||||
## ベストプラクティス
|
||||
|
||||
### 1. 説明を具体的にする
|
||||
|
||||
- **悪い例(曖昧)**: "Helps with documents"
|
||||
- **良い例(具体的)**: "Extract text and tables from PDF files, fill forms, merge documents. Use when working with PDF files or when the user mentions PDFs, forms, or document extraction."
|
||||
|
||||
### 2. スキルを 1 つの目的に絞る
|
||||
|
||||
- 1 スキル = 1 機能
|
||||
- 良い例: "PDF form filling"
|
||||
- 悪い例: "Document processing"(広すぎる)
|
||||
|
||||
### 3. トリガーワードを含める
|
||||
|
||||
ユーザーのリクエストとマッチするキーワードを説明に追加する:
|
||||
```yaml
|
||||
description: Analyze Excel spreadsheets, generate pivot tables, create charts. Use when working with Excel files, spreadsheets, or .xlsx files.
|
||||
```
|
||||
|
||||
### 4. SKILL.md を 500 行以下に保つ
|
||||
|
||||
詳細なリファレンスは別ファイルへ移し、必要に応じて Claude がロードできるようにする。
|
||||
|
||||
### 5. 補助ファイルを参照する
|
||||
|
||||
```markdown
|
||||
## Additional resources
|
||||
|
||||
- For complete API details, see [reference.md](reference.md)
|
||||
- For usage examples, see [examples.md](examples.md)
|
||||
```
|
||||
|
||||
### やるべきこと
|
||||
|
||||
- 明確で説明的な名前を使う
|
||||
- 包括的な命令を含める
|
||||
- 具体的な例を入れる
|
||||
- 関連スクリプトとテンプレートをパッケージ化する
|
||||
- 実シナリオでテストする
|
||||
- 依存関係をドキュメント化する
|
||||
|
||||
### やってはいけないこと
|
||||
|
||||
- 一度きりのタスク向けにスキルを作らない
|
||||
- 既存機能を重複させない
|
||||
- スキルを広くしすぎない
|
||||
- description フィールドを省略しない
|
||||
- 信頼できないソースのスキルを監査せずにインストールしない
|
||||
|
||||
## トラブルシューティング
|
||||
|
||||
### クイックリファレンス
|
||||
|
||||
| 問題 | 解決策 |
|
||||
|-------|----------|
|
||||
| Claude がスキルを使わない | description をトリガー語句で具体化する |
|
||||
| スキルファイルが見つからない | パス確認: `~/.claude/skills/name/SKILL.md` |
|
||||
| YAML エラー | `---` マーカー、インデント、タブ無し確認 |
|
||||
| スキルが衝突する | description に区別できるトリガー語句を入れる |
|
||||
| スクリプトが動かない | パーミッション確認: `chmod +x scripts/*.py` |
|
||||
| Claude が一部スキルを認識しない | スキルが多すぎる。`/context` で警告を確認 |
|
||||
|
||||
### スキルがトリガーされない場合
|
||||
|
||||
Claude が期待通りにスキルを使わない場合:
|
||||
|
||||
1. ユーザーが自然に発する語句が description のキーワードに含まれているか確認する
|
||||
2. 「What skills are available?」と尋ねてスキルが表示されるか確認する
|
||||
3. リクエストを description にマッチするように言い換える
|
||||
4. `/skill-name` で直接呼び出してテストする
|
||||
|
||||
### スキルが過剰にトリガーされる場合
|
||||
|
||||
意図しないところで Claude がスキルを使う場合:
|
||||
|
||||
1. description をより具体的にする
|
||||
2. 手動呼び出しのみとするため `disable-model-invocation: true` を追加する
|
||||
|
||||
### Claude が一部のスキルを認識しない場合
|
||||
|
||||
スキルの description は **コンテキストウィンドウの 1 %** を上限としてロードされる(フォールバック: **8,000 文字**)。各エントリはバジェットに関係なく 250 文字に制限される。`/context` を実行して除外されたスキルに関する警告を確認する。バジェットは環境変数 `SLASH_COMMAND_TOOL_CHAR_BUDGET` で上書きできる。
|
||||
|
||||
## セキュリティ上の考慮事項
|
||||
|
||||
**信頼できるソースのスキルのみを使うこと。** スキルは命令とコードを通じて Claude に能力を与える。悪意あるスキルは、Claude に有害な方法でツールを呼び出させたりコードを実行させたりする可能性がある。
|
||||
|
||||
**主要なセキュリティ考慮事項:**
|
||||
|
||||
- **徹底した監査**: スキルディレクトリ内の全ファイルをレビューする
|
||||
- **外部ソースはリスクが高い**: 外部 URL から取得するスキルは侵害される恐れがある
|
||||
- **ツールの悪用**: 悪意あるスキルが有害な方法でツールを呼び出すおそれがある
|
||||
- **ソフトウェアインストールと同様に扱う**: 信頼できるソースのスキルのみを使う
|
||||
|
||||
### スキル内のシェル置換の無効化
|
||||
|
||||
スキルは Claude が見る前に `` !`command` `` 構文でシェルコマンドの出力をプロンプトに挿入できる。セキュリティ重視の環境(共有された組織展開、ロックダウンされた CI ランナー)では、`disableSkillShellExecution` 設定で置換を完全に無効化できる(**v2.1.91** で追加):
|
||||
|
||||
```jsonc
|
||||
// ~/.claude/settings.json または管理ポリシー
|
||||
{
|
||||
"disableSkillShellExecution": true
|
||||
}
|
||||
```
|
||||
|
||||
`disableSkillShellExecution` が `true` のとき、スキル内の `` !`command` `` マーカーは実行されずリテラル文字列として残される。スキル自体を無効化することなく、スキルレベルのシェルインジェクション攻撃面を取り除ける。多層防御のため、`allowedTools` 許可リストとの組み合わせを検討するとよい。
|
||||
|
||||
## スキルと他機能の比較
|
||||
|
||||
| 機能 | 呼び出し | 適した用途 |
|
||||
|---------|------------|----------|
|
||||
| **スキル** | 自動または `/name` | 再利用可能な専門知識、ワークフロー |
|
||||
| **スラッシュコマンド** | ユーザー起点 `/name` | 簡易ショートカット(スキルへ統合済み) |
|
||||
| **サブエージェント** | 自動委譲 | 隔離されたタスク実行 |
|
||||
| **メモリ(CLAUDE.md)** | 常時ロード | 永続的なプロジェクトコンテキスト |
|
||||
| **MCP** | リアルタイム | 外部データやサービスへのアクセス |
|
||||
| **フック** | イベント駆動 | 自動化された副作用 |
|
||||
|
||||
## バンドル済みスキル
|
||||
|
||||
Claude Code には、インストール不要で常時利用できる組み込みスキルが複数同梱されている。
|
||||
|
||||
| スキル | 説明 |
|
||||
|-------|-------------|
|
||||
| `/simplify` | 変更ファイルを再利用性、品質、効率の観点でレビューする。3 つの並列レビューエージェントを起動 |
|
||||
| `/batch <instruction>` | git worktree を用いてコードベース全体に大規模な並列変更をオーケストレーション |
|
||||
| `/debug [description]` | デバッグログを読んで現在のセッションをトラブルシュート |
|
||||
| `/loop [interval] <prompt>` | プロンプトを定期的に繰り返し実行(例: `/loop 5m check the deploy`) |
|
||||
| `/claude-api` | Claude API/SDK リファレンスをロード。`anthropic`/`@anthropic-ai/sdk` のインポート時に自動発火 |
|
||||
|
||||
これらのスキルは追加インストールや設定なしでそのまま使える。カスタムスキルと同じ SKILL.md 形式に従う。
|
||||
|
||||
## スキルの共有
|
||||
|
||||
### プロジェクトスキル(チーム共有)
|
||||
|
||||
1. `.claude/skills/` にスキルを作成する
|
||||
2. git にコミットする
|
||||
3. チームメンバーが pull すれば即時に利用可能となる
|
||||
|
||||
### 個人スキル
|
||||
|
||||
```bash
|
||||
# 個人ディレクトリへコピー
|
||||
cp -r my-skill ~/.claude/skills/
|
||||
|
||||
# スクリプトを実行可能にする
|
||||
chmod +x ~/.claude/skills/my-skill/scripts/*.py
|
||||
```
|
||||
|
||||
### プラグイン配布
|
||||
|
||||
より広範な配布のため、プラグインの `skills/` ディレクトリにスキルをパッケージ化する。
|
||||
|
||||
## さらに進むには: スキルコレクションとスキルマネージャー
|
||||
|
||||
スキルを本格的に作り始めると、2 つのものが不可欠となる。実証済みスキルのライブラリと、それらを管理するツールである。
|
||||
|
||||
**[luongnv89/skills](https://github.com/luongnv89/skills)** — ほぼ全プロジェクトで日々使っているスキルのコレクション。ハイライトとして `logo-designer`(プロジェクトロゴをその場で生成)や `ollama-optimizer`(ハードウェアに合わせてローカル LLM の性能をチューニング)がある。すぐ使えるスキルを探しているなら良い出発点である。
|
||||
|
||||
**[luongnv89/asm](https://github.com/luongnv89/asm)** — Agent Skill Manager。スキル開発、重複検出、テストを扱う。`asm link` コマンドにより、ファイルをコピーすることなく任意のプロジェクトでスキルをテストできる。スキルが少し増えてきたら不可欠なツールである。
|
||||
|
||||
## 追加リソース
|
||||
|
||||
- [公式スキルドキュメント](https://code.claude.com/docs/en/skills)
|
||||
- [Agent Skills アーキテクチャブログ](https://claude.com/blog/equipping-agents-for-the-real-world-with-agent-skills)
|
||||
- [Skills リポジトリ](https://github.com/luongnv89/skills) - すぐ使えるスキルのコレクション
|
||||
- [スラッシュコマンドガイド](../01-slash-commands/) - ユーザー起点のショートカット
|
||||
- [サブエージェントガイド](../04-subagents/) - 委譲された AI エージェント
|
||||
- [メモリガイド](../02-memory/) - 永続的なコンテキスト
|
||||
- [MCP(Model Context Protocol)](../05-mcp/) - リアルタイム外部データ
|
||||
- [フックガイド](../06-hooks/) - イベント駆動の自動化
|
||||
|
||||
---
|
||||
**最終更新**: 2026 年 4 月 24 日
|
||||
**Claude Code バージョン**: 2.1.119
|
||||
**情報源**:
|
||||
- https://code.claude.com/docs/en/skills
|
||||
- https://code.claude.com/docs/en/settings
|
||||
- https://code.claude.com/docs/en/changelog
|
||||
**対応モデル**: Claude Sonnet 4.6, Claude Opus 4.7, Claude Haiku 4.5
|
||||
@@ -0,0 +1,278 @@
|
||||
<!-- i18n-source: 03-skills/blog-draft/SKILL.md -->
|
||||
<!-- i18n-source-sha: f396788 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: blog-draft
|
||||
description: アイデアとリソースからブログ記事の下書きを作成する。ブログ記事の執筆、リサーチからのコンテンツ作成、記事の下書き作成時に使用する。リサーチ、ブレインストーミング、アウトライン作成、バージョン管理付きの反復的な下書き作成を案内する。
|
||||
---
|
||||
|
||||
## ユーザー入力
|
||||
|
||||
```text
|
||||
$ARGUMENTS
|
||||
```
|
||||
|
||||
進める前にユーザー入力を**必ず**考慮する。ユーザーは以下を提供すべきである。
|
||||
- **Idea/Topic**: ブログ記事の主要なコンセプトやテーマ
|
||||
- **Resources**: URL、ファイル、リサーチ用の参考情報(任意だが推奨)
|
||||
- **Target audience**: ブログ記事の対象読者(任意)
|
||||
- **Tone/Style**: フォーマル、カジュアル、技術的、など(任意)
|
||||
|
||||
**重要**: ユーザーが**既存のブログ記事**の更新を要求している場合、ステップ 0-8 をスキップして直接**ステップ 9**から開始する。まず既存の下書きファイルを読み、その後で反復プロセスを進める。
|
||||
|
||||
## 実行フロー
|
||||
|
||||
以下のステップを順次実行する。**ステップをスキップしたり、指示された箇所でユーザー承認なしに進めたりしてはならない。**
|
||||
|
||||
### Step 0: プロジェクトフォルダの作成
|
||||
|
||||
1. 次の形式でフォルダ名を生成する: `YYYY-MM-DD-short-topic-name`
|
||||
- 今日の日付を使用
|
||||
- トピックから短く URL フレンドリーなスラッグを作成(小文字、ハイフン、最大 5 単語)
|
||||
|
||||
2. フォルダ構造を作成:
|
||||
```
|
||||
blog-posts/
|
||||
└── YYYY-MM-DD-short-topic-name/
|
||||
└── resources/
|
||||
```
|
||||
|
||||
3. 進める前にフォルダ作成をユーザーに確認する。
|
||||
|
||||
### Step 1: リサーチとリソース収集
|
||||
|
||||
1. ブログ記事ディレクトリ内に `resources/` サブフォルダを作成
|
||||
|
||||
2. 提供された各リソースに対して:
|
||||
- **URLs**: 取得して主要情報を `resources/` にマークダウンファイルとして保存
|
||||
- **Files**: 読み込んで `resources/` に要約
|
||||
- **Topics**: ウェブ検索を使用して最新情報を収集
|
||||
|
||||
3. 各リソースについて、`resources/` に要約ファイルを作成:
|
||||
- `resources/source-1-[short-name].md`
|
||||
- `resources/source-2-[short-name].md`
|
||||
- など
|
||||
|
||||
4. 各要約には以下を含める:
|
||||
```markdown
|
||||
# Source: [Title/URL]
|
||||
|
||||
## Key Points
|
||||
- Point 1
|
||||
- Point 2
|
||||
|
||||
## Relevant Quotes/Data
|
||||
- Quote or statistic 1
|
||||
- Quote or statistic 2
|
||||
|
||||
## How This Relates to Topic
|
||||
関連性の簡潔な説明
|
||||
```
|
||||
|
||||
5. リサーチの要約をユーザーに提示する。
|
||||
|
||||
### Step 2: ブレインストーミングと明確化
|
||||
|
||||
1. アイデアとリサーチしたリソースに基づき、以下を提示:
|
||||
- リサーチから特定された**主要テーマ**
|
||||
- ブログ記事の**取りうる切り口**
|
||||
- カバーすべき**重要ポイント**
|
||||
- 明確化が必要な情報の**ギャップ**
|
||||
|
||||
2. 明確化のための質問:
|
||||
- 読者に持って帰ってほしい主要なテイクアウェイは何か?
|
||||
- リサーチの中で特に強調したい点はあるか?
|
||||
- 目標の長さは?(short: 500-800 words、medium: 1000-1500、long: 2000+)
|
||||
- 除外したい点はあるか?
|
||||
|
||||
3. **進める前にユーザー応答を待つ。**
|
||||
|
||||
### Step 3: アウトライン提案
|
||||
|
||||
1. 以下を含む構造化されたアウトラインを作成:
|
||||
|
||||
```markdown
|
||||
# Blog Post Outline: [Title]
|
||||
|
||||
## Meta Information
|
||||
- **Target Audience**: [who]
|
||||
- **Tone**: [style]
|
||||
- **Target Length**: [word count]
|
||||
- **Main Takeaway**: [key message]
|
||||
|
||||
## Proposed Structure
|
||||
|
||||
### Hook/Introduction
|
||||
- Opening hook idea
|
||||
- Context setting
|
||||
- Thesis statement
|
||||
|
||||
### Section 1: [Title]
|
||||
- Key point A
|
||||
- Key point B
|
||||
- Supporting evidence from [source]
|
||||
|
||||
### Section 2: [Title]
|
||||
- Key point A
|
||||
- Key point B
|
||||
|
||||
[全セクションについて続ける...]
|
||||
|
||||
### Conclusion
|
||||
- Summary of key points
|
||||
- Call to action or final thought
|
||||
|
||||
## Sources to Cite
|
||||
- Source 1
|
||||
- Source 2
|
||||
```
|
||||
|
||||
2. アウトラインをユーザーに提示し、**承認または修正を求める**。
|
||||
|
||||
### Step 4: 承認されたアウトラインの保存
|
||||
|
||||
1. ユーザーがアウトラインを承認したら、ブログ記事フォルダ内の `OUTLINE.md` に保存する。
|
||||
|
||||
2. アウトラインが保存されたことを確認する。
|
||||
|
||||
### Step 5: アウトラインのコミット(git リポジトリの場合)
|
||||
|
||||
1. カレントディレクトリが git リポジトリかどうか確認する。
|
||||
|
||||
2. はいの場合:
|
||||
- 新しいファイル(ブログ記事フォルダ、resources、OUTLINE.md)をステージング
|
||||
- 次のメッセージでコミットを作成: `docs: Add outline for blog post - [topic-name]`
|
||||
- リモートへプッシュ
|
||||
|
||||
3. git リポジトリでない場合は、このステップをスキップしユーザーに伝える。
|
||||
|
||||
### Step 6: 下書き作成
|
||||
|
||||
1. 承認されたアウトラインに基づき、ブログ記事の下書き全文を作成する。
|
||||
|
||||
2. OUTLINE.md の構造に厳密に従う。
|
||||
|
||||
3. 含めるもの:
|
||||
- フック付きの魅力的な導入
|
||||
- 明確なセクション見出し
|
||||
- リサーチからの裏付けとなる証拠と例
|
||||
- セクション間の滑らかな遷移
|
||||
- テイクアウェイのある力強い結論
|
||||
- **Citations**: すべての比較、統計、データポイント、事実主張は元のソースを必ず引用すること
|
||||
|
||||
4. 下書きをブログ記事フォルダ内に `draft-v0.1.md` として保存する。
|
||||
|
||||
5. フォーマット:
|
||||
```markdown
|
||||
# [Blog Post Title]
|
||||
|
||||
*[Optional: subtitle or tagline]*
|
||||
|
||||
[インライン引用付きの本文...]
|
||||
|
||||
---
|
||||
|
||||
## References
|
||||
- [1] Source 1 Title - URL or Citation
|
||||
- [2] Source 2 Title - URL or Citation
|
||||
- [3] Source 3 Title - URL or Citation
|
||||
```
|
||||
|
||||
6. **引用要件**:
|
||||
- すべてのデータポイント、統計、比較にはインライン引用を必ず付ける
|
||||
- [1]、[2] などの番号引用、または [Source Name] のような名前付き引用を使用
|
||||
- 引用を末尾の References セクションへリンクする
|
||||
- 例: "Studies show that 65% of developers prefer TypeScript [1]"
|
||||
- 例: "React outperforms Vue in rendering speed by 20% [React Benchmarks 2024]"
|
||||
|
||||
### Step 7: 下書きのコミット(git リポジトリの場合)
|
||||
|
||||
1. git リポジトリかどうか確認する。
|
||||
|
||||
2. はいの場合:
|
||||
- 下書きファイルをステージング
|
||||
- 次のメッセージでコミットを作成: `docs: Add draft v0.1 for blog post - [topic-name]`
|
||||
- リモートへプッシュ
|
||||
|
||||
3. git リポジトリでない場合は、スキップしてユーザーに伝える。
|
||||
|
||||
### Step 8: レビュー用に下書きを提示
|
||||
|
||||
1. 下書きの内容をユーザーに提示する。
|
||||
|
||||
2. フィードバックを求める:
|
||||
- 全体の印象は?
|
||||
- 拡張または削減が必要なセクションは?
|
||||
- トーン調整は必要か?
|
||||
- 不足している情報は?
|
||||
- 具体的な編集や書き直しは?
|
||||
|
||||
3. **ユーザー応答を待つ。**
|
||||
|
||||
### Step 9: 反復または最終化
|
||||
|
||||
**ユーザーが変更を要求した場合:**
|
||||
1. すべての要望を記録する
|
||||
2. 以下の調整を加えてステップ 6 へ戻る:
|
||||
- バージョン番号を増加(v0.2、v0.3 など)
|
||||
- すべてのフィードバックを反映
|
||||
- `draft-v[X.Y].md` として保存
|
||||
- ステップ 7-8 を繰り返す
|
||||
|
||||
**ユーザーが承認した場合:**
|
||||
1. 最終下書きのバージョンを確認
|
||||
2. ユーザーが要求すれば任意で `final.md` にリネーム
|
||||
3. ブログ記事作成プロセスを要約:
|
||||
- 作成したバージョンの総数
|
||||
- バージョン間の主要な変更
|
||||
- 最終ワード数
|
||||
- 作成したファイル
|
||||
|
||||
## バージョン追跡
|
||||
|
||||
すべての下書きは段階的なバージョン番号付きで保持する:
|
||||
- `draft-v0.1.md` - 初回下書き
|
||||
- `draft-v0.2.md` - 1 回目のフィードバック反映後
|
||||
- `draft-v0.3.md` - 2 回目のフィードバック反映後
|
||||
- など
|
||||
|
||||
これによりブログ記事の進化を追跡し、必要に応じて差し戻すことができる。
|
||||
|
||||
## 出力ファイル構造
|
||||
|
||||
```
|
||||
blog-posts/
|
||||
└── YYYY-MM-DD-topic-name/
|
||||
├── resources/
|
||||
│ ├── source-1-name.md
|
||||
│ ├── source-2-name.md
|
||||
│ └── ...
|
||||
├── OUTLINE.md
|
||||
├── draft-v0.1.md
|
||||
├── draft-v0.2.md (反復した場合)
|
||||
└── draft-v0.3.md (さらに反復した場合)
|
||||
```
|
||||
|
||||
## 品質のためのヒント
|
||||
|
||||
- **Hook**: 質問、意外な事実、共感できるシナリオで始める
|
||||
- **Flow**: 各段落は次の段落と接続させる
|
||||
- **Evidence**: リサーチデータで主張を裏付ける
|
||||
- **Citations**: 以下については必ずソースを引用する:
|
||||
- すべての統計とデータポイント(例: "According to [Source], 75% of...")
|
||||
- 製品、サービス、アプローチ間の比較(例: "X performs 2x faster than Y [Source]")
|
||||
- 市場トレンド、リサーチ結果、ベンチマークについての事実主張
|
||||
- 形式: [Source Name] または [Author, Year] のインライン引用を使用
|
||||
- **Voice**: 全体を通じて一貫したトーンを保つ
|
||||
- **Length**: 目標ワード数を尊重
|
||||
- **Readability**: 短い段落、適切な箇所での箇条書きを使用
|
||||
- **CTA**: 明確な CTA または考えさせる問いで終える
|
||||
|
||||
## 注意事項
|
||||
|
||||
- 指定されたチェックポイントでは必ずユーザー承認を待つ
|
||||
- 履歴のためすべての下書きバージョンを保持する
|
||||
- URL が提供された場合は最新情報のためウェブ検索を使用する
|
||||
- リソースが不十分な場合はユーザーに追加を求めるか、追加リサーチを提案する
|
||||
- 対象読者(技術系、一般、ビジネスなど)に応じてトーンを適応させる
|
||||
@@ -0,0 +1,71 @@
|
||||
<!-- i18n-source: 03-skills/blog-draft/templates/draft-template.md -->
|
||||
<!-- i18n-source-sha: 9b21f2b -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
# [Blog Post Title]
|
||||
|
||||
*[サブタイトルまたはタグライン - 任意]*
|
||||
|
||||
**[Author Name]** | [Date]
|
||||
|
||||
---
|
||||
|
||||
[オープニング・フック - すぐに注目を集める]
|
||||
|
||||
[文脈と背景 - なぜ重要か]
|
||||
|
||||
[テーゼ・ステートメント - この記事で扱う内容]
|
||||
|
||||
---
|
||||
|
||||
## [Section 1 Title]
|
||||
|
||||
[明確で魅力的な散文によるセクション内容]
|
||||
|
||||
[論点を支える証拠、例、データを含める]
|
||||
|
||||
> "研究からの関連する引用" - Source
|
||||
|
||||
[次のセクションへの遷移]
|
||||
|
||||
---
|
||||
|
||||
## [Section 2 Title]
|
||||
|
||||
[本文を継続]
|
||||
|
||||
**重要なポイント:** [重要事項を太字またはコールアウトボックスで強調]
|
||||
|
||||
[追加の補足コンテンツ]
|
||||
|
||||
---
|
||||
|
||||
## [Section 3 Title]
|
||||
|
||||
[必要に応じて追加セクション]
|
||||
|
||||
### サブセクション(必要な場合)
|
||||
|
||||
[サブセクション内容]
|
||||
|
||||
---
|
||||
|
||||
## 結論
|
||||
|
||||
[扱った主要なポイントを要約]
|
||||
|
||||
[主要なテイクアウェイを補強]
|
||||
|
||||
[CTA または考えさせる最後の一文]
|
||||
|
||||
---
|
||||
|
||||
## References
|
||||
|
||||
1. [Source Title](#)
|
||||
2. [Source Title](#)
|
||||
3. [Source Title](#)
|
||||
|
||||
---
|
||||
|
||||
*[任意: 著者プロフィールまたは関連記事の提案]*
|
||||
@@ -0,0 +1,101 @@
|
||||
<!-- i18n-source: 03-skills/blog-draft/templates/outline-template.md -->
|
||||
<!-- i18n-source-sha: 9b21f2b -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
# Blog Post Outline: [Title]
|
||||
|
||||
## メタ情報
|
||||
|
||||
| Attribute | Value |
|
||||
|-----------|-------|
|
||||
| **Target Audience** | [誰に向けてか?] |
|
||||
| **Tone** | [Formal/Casual/Technical/Conversational] |
|
||||
| **Target Length** | [単語数の範囲] |
|
||||
| **Main Takeaway** | [一文で:読者に何を覚えてほしいか?] |
|
||||
| **Keywords** | [関連する場合の SEO キーワード] |
|
||||
|
||||
---
|
||||
|
||||
## 提案する構成
|
||||
|
||||
### 1. 導入 / フック
|
||||
|
||||
**オープニング・フックの選択肢:**
|
||||
- [ ] 読者に共鳴する問い
|
||||
- [ ] 意外な統計や事実
|
||||
- [ ] 短いストーリーやシナリオ
|
||||
- [ ] 大胆な主張
|
||||
|
||||
**文脈の設定:**
|
||||
- 必要な背景情報
|
||||
- なぜ今このトピックが重要か
|
||||
|
||||
**テーゼ・ステートメント:**
|
||||
- 記事で扱う内容を明確に提示
|
||||
|
||||
---
|
||||
|
||||
### 2. [Section Title]
|
||||
|
||||
**重要ポイント:**
|
||||
- Point A: [説明]
|
||||
- Point B: [説明]
|
||||
|
||||
**裏付けとなる証拠:**
|
||||
- [source] より: [関連データ/引用]
|
||||
|
||||
**次セクションへの遷移:**
|
||||
- [次の内容との関連]
|
||||
|
||||
---
|
||||
|
||||
### 3. [Section Title]
|
||||
|
||||
**重要ポイント:**
|
||||
- Point A: [説明]
|
||||
- Point B: [説明]
|
||||
|
||||
**裏付けとなる証拠:**
|
||||
- [source] より: [関連データ/引用]
|
||||
|
||||
**次セクションへの遷移:**
|
||||
- [次の内容との関連]
|
||||
|
||||
---
|
||||
|
||||
### 4. [Section Title](必要に応じてセクションを追加)
|
||||
|
||||
**重要ポイント:**
|
||||
- Point A: [説明]
|
||||
- Point B: [説明]
|
||||
|
||||
**裏付けとなる証拠:**
|
||||
- [source] より: [関連データ/引用]
|
||||
|
||||
---
|
||||
|
||||
### 5. 結論
|
||||
|
||||
**重要ポイントの要約:**
|
||||
- ポイント 1 のおさらい
|
||||
- ポイント 2 のおさらい
|
||||
- ポイント 3 のおさらい
|
||||
|
||||
**最後のひと言 / CTA:**
|
||||
- [読者に次に何をしてほしいか、何を考えてほしいか?]
|
||||
|
||||
---
|
||||
|
||||
## 引用するソース
|
||||
|
||||
1. [Source Name](#) - 利用目的: [どの情報に使うか]
|
||||
2. [Source Name](#) - 利用目的: [どの情報に使うか]
|
||||
3. [Source Name](#) - 利用目的: [どの情報に使うか]
|
||||
|
||||
---
|
||||
|
||||
## 下書き用メモ
|
||||
|
||||
- [固有の要件や制約]
|
||||
- [強調したい点]
|
||||
- [避けるべき点]
|
||||
@@ -0,0 +1,76 @@
|
||||
<!-- i18n-source: 03-skills/brand-voice/SKILL.md -->
|
||||
<!-- i18n-source-sha: a6380d8 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: brand-voice-consistency
|
||||
description: すべてのコミュニケーションがブランドボイスとトーンのガイドラインに沿うことを保証する。マーケティングコピー、顧客向け連絡、公開コンテンツの作成時、またはブランドボイス、トーン、文体について言及がある場合に使用する。
|
||||
---
|
||||
|
||||
# ブランドボイス・スキル
|
||||
|
||||
## 概要
|
||||
このスキルは、すべてのコミュニケーションにおいて一貫したブランドボイス、トーン、メッセージングを維持する。
|
||||
|
||||
## ブランドアイデンティティ
|
||||
|
||||
### ミッション
|
||||
チームが AI で開発ワークフローを自動化することを支援する
|
||||
|
||||
### バリュー
|
||||
- **シンプリシティ**: 複雑なものをシンプルにする
|
||||
- **信頼性**: 揺るぎない実行
|
||||
- **エンパワーメント**: 人間の創造性を引き出す
|
||||
|
||||
### トーン・オブ・ボイス
|
||||
- **フレンドリーかつプロフェッショナル** - カジュアルにならず、親しみやすい
|
||||
- **明快で簡潔** - 専門用語を避け、技術的な概念をわかりやすく説明する
|
||||
- **自信を持って** - 自分たちが何をしているかを理解している
|
||||
- **共感的** - ユーザーのニーズと痛みを理解する
|
||||
|
||||
## 執筆ガイドライン
|
||||
|
||||
### やるべきこと ✅
|
||||
- 読者を指す際には「you」を使用
|
||||
- 能動態を使用: 「Claude generates reports」とし、「Reports are generated by Claude」としない
|
||||
- 価値提案から始める
|
||||
- 具体例を用いる
|
||||
- 1 文を 20 語未満に保つ
|
||||
- 明確化のためリストを使用
|
||||
- CTA(行動喚起)を含める
|
||||
|
||||
### 避けるべきこと ❌
|
||||
- 企業ジャーゴンを使わない
|
||||
- 見下したり過度に単純化したりしない
|
||||
- 「we believe」や「we think」を使わない
|
||||
- 強調以外で全大文字を使わない
|
||||
- 文章の壁を作らない
|
||||
- 技術的な前提知識を仮定しない
|
||||
|
||||
## ボキャブラリー
|
||||
|
||||
### ✅ 推奨用語
|
||||
- Claude(「the Claude AI」ではなく)
|
||||
- Code generation(「auto-coding」ではなく)
|
||||
- Agent(「bot」ではなく)
|
||||
- Streamline(「revolutionize」ではなく)
|
||||
- Integrate(「synergize」ではなく)
|
||||
|
||||
### ❌ 避ける用語
|
||||
- 「Cutting-edge」(使い古されている)
|
||||
- 「Game-changer」(曖昧)
|
||||
- 「Leverage」(企業用語的)
|
||||
- 「Utilize」(「use」を使う)
|
||||
- 「Paradigm shift」(不明瞭)
|
||||
|
||||
## 例
|
||||
|
||||
### ✅ 良い例
|
||||
"Claude automates your code review process. Instead of manually checking each PR, Claude reviews security, performance, and quality—saving your team hours every week."
|
||||
|
||||
なぜ機能するか: 明確な価値、具体的なメリット、行動志向
|
||||
|
||||
### ❌ 悪い例
|
||||
"Claude leverages cutting-edge AI to provide comprehensive software development solutions."
|
||||
|
||||
なぜ機能しないか: 曖昧、企業ジャーゴン、具体的な価値がない
|
||||
@@ -0,0 +1,17 @@
|
||||
<!-- i18n-source: 03-skills/brand-voice/tone-examples.md -->
|
||||
<!-- i18n-source-sha: 5caeff2 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
# ブランドボイスのトーン例
|
||||
|
||||
## 期待を高めるアナウンス
|
||||
"コードレビューを週 8 時間削減。Claude が PR を自動でレビューする。"
|
||||
|
||||
## 共感を示すサポート
|
||||
"デプロイがストレスになることは理解している。Claude がテストを担当するため、心配は不要だ。"
|
||||
|
||||
## 自信を示すプロダクト機能
|
||||
"Claude は単にコードを提案するだけではない。アーキテクチャを理解し、一貫性を保つ。"
|
||||
|
||||
## 教育的なブログ記事
|
||||
"エージェントがコードレビューのワークフローをどのように改善するかを見ていこう。学んだことは次のとおりである……"
|
||||
@@ -0,0 +1,215 @@
|
||||
<!-- i18n-source: 03-skills/claude-md/SKILL.md -->
|
||||
<!-- i18n-source-sha: f78c094 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
---
|
||||
name: claude-md
|
||||
description: Create or update CLAUDE.md files following best practices for optimal AI agent onboarding
|
||||
---
|
||||
|
||||
## ユーザー入力
|
||||
|
||||
```text
|
||||
$ARGUMENTS
|
||||
```
|
||||
|
||||
ユーザー入力が空でない場合、進める前に **必ず** 内容を考慮すること。ユーザーは以下を指定する場合がある:
|
||||
- `create` - 新しい CLAUDE.md をゼロから作成
|
||||
- `update` - 既存 CLAUDE.md を改善
|
||||
- `audit` - 現在の CLAUDE.md の品質を分析しレポート
|
||||
- 作成・更新する具体的なパス(例: ディレクトリ固有命令向けの `src/api/CLAUDE.md`)
|
||||
|
||||
## 基本原則
|
||||
|
||||
**LLM はステートレス**: CLAUDE.md は、すべての会話に自動的に含まれる唯一のファイルである。コードベースに対する AI エージェントの主要なオンボーディングドキュメントとして機能する。
|
||||
|
||||
### ゴールデンルール
|
||||
|
||||
1. **少ないほど良い**: フロンティア LLM は約 150〜200 個の命令に従える。Claude Code のシステムプロンプトはすでに約 50 個を使用している。CLAUDE.md は焦点を絞り簡潔に保つこと。
|
||||
|
||||
2. **普遍的な適用性**: あらゆるセッションに関係する情報のみを含める。タスク固有の命令は別ファイルに置く。
|
||||
|
||||
3. **Claude をリンターとして使わない**: スタイルガイドラインはコンテキストを膨張させ命令の遵守を低下させる。代わりに決定論的なツール(prettier, eslint など)を使う。
|
||||
|
||||
4. **絶対に自動生成しない**: CLAUDE.md は AI ハーネスにおける最も影響力の高いポイントである。慎重に手作業で作り上げること。
|
||||
|
||||
## 実行フロー
|
||||
|
||||
### 1. プロジェクト分析
|
||||
|
||||
まず現在のプロジェクト状態を分析する:
|
||||
|
||||
1. 既存の CLAUDE.md ファイルを確認:
|
||||
- ルートレベル: `./CLAUDE.md` または `.claude/CLAUDE.md`
|
||||
- ディレクトリ固有: `**/CLAUDE.md`
|
||||
- グローバルユーザー設定: `~/.claude/CLAUDE.md`
|
||||
|
||||
2. プロジェクト構造を特定:
|
||||
- 技術スタック(言語、フレームワーク)
|
||||
- プロジェクト種別(モノレポ、単一アプリ、ライブラリ)
|
||||
- 開発ツール(パッケージマネージャー、ビルドシステム、テストランナー)
|
||||
|
||||
3. 既存ドキュメントをレビュー:
|
||||
- README.md
|
||||
- CONTRIBUTING.md
|
||||
- package.json, pyproject.toml, Cargo.toml など
|
||||
|
||||
### 2. コンテンツ戦略(WHAT, WHY, HOW)
|
||||
|
||||
CLAUDE.md を 3 つの観点で構成する:
|
||||
|
||||
#### WHAT - 技術と構造
|
||||
- 技術スタックの概要
|
||||
- プロジェクトの編成(モノレポでは特に重要)
|
||||
- 主要ディレクトリとその目的
|
||||
|
||||
#### WHY - 目的と背景
|
||||
- プロジェクトが何をするか
|
||||
- なぜ特定の設計判断が下されたのか
|
||||
- 各主要コンポーネントが何を担当するか
|
||||
|
||||
#### HOW - ワークフローと規約
|
||||
- 開発ワークフロー(bun と node、pip と uv など)
|
||||
- テスト手順とコマンド
|
||||
- 検証およびビルド手段
|
||||
- 重要な「ハマりどころ」や明示されない要件
|
||||
|
||||
### 3. プログレッシブディスクロージャ戦略
|
||||
|
||||
大規模プロジェクトでは `agent_docs/` フォルダの作成を推奨する:
|
||||
|
||||
```
|
||||
agent_docs/
|
||||
|- building_the_project.md
|
||||
|- running_tests.md
|
||||
|- code_conventions.md
|
||||
|- architecture_decisions.md
|
||||
```
|
||||
|
||||
CLAUDE.md からは以下のような命令でこれらのファイルを参照する:
|
||||
```markdown
|
||||
For detailed build instructions, refer to `agent_docs/building_the_project.md`
|
||||
```
|
||||
|
||||
**重要**: 古くなるコンテキストを避けるため、コードスニペットではなく `file:line` 参照を用いる。
|
||||
|
||||
### 4. 品質制約
|
||||
|
||||
CLAUDE.md を作成・更新する際:
|
||||
|
||||
1. **目標の長さ**: 300 行以下(理想は 100 行以下)
|
||||
2. **スタイルルールなし**: lint やフォーマットの命令は除く
|
||||
3. **タスク固有命令なし**: 別ファイルへ移す
|
||||
4. **コードスニペットなし**: ファイル参照を用いる
|
||||
5. **冗長情報なし**: package.json や README にあるものを繰り返さない
|
||||
|
||||
### 5. 必須セクション
|
||||
|
||||
良く構成された CLAUDE.md には以下を含めるべきである:
|
||||
|
||||
```markdown
|
||||
# Project Name
|
||||
|
||||
Brief one-line description.
|
||||
|
||||
## Tech Stack
|
||||
- Primary language and version
|
||||
- Key frameworks/libraries
|
||||
- Database/storage (if any)
|
||||
|
||||
## Project Structure
|
||||
[Only for monorepos or complex structures]
|
||||
- `apps/` - Application entry points
|
||||
- `packages/` - Shared libraries
|
||||
|
||||
## Development Commands
|
||||
- Install: `command`
|
||||
- Test: `command`
|
||||
- Build: `command`
|
||||
|
||||
## Critical Conventions
|
||||
[Only non-obvious, high-impact conventions]
|
||||
- Convention 1 with brief explanation
|
||||
- Convention 2 with brief explanation
|
||||
|
||||
## Known Issues / Gotchas
|
||||
[Things that consistently trip up developers]
|
||||
- Issue 1
|
||||
- Issue 2
|
||||
```
|
||||
|
||||
### 6. 避けるべきアンチパターン
|
||||
|
||||
**含めてはいけないもの:**
|
||||
- コードスタイルガイドライン(リンターを使う)
|
||||
- Claude の使い方に関するドキュメント
|
||||
- 自明なパターンへの長い説明
|
||||
- コピー&ペーストされたコード例
|
||||
- 一般的なベストプラクティス("write clean code")
|
||||
- 特定タスク向けの命令
|
||||
- 自動生成された内容
|
||||
- 大量の TODO リスト
|
||||
|
||||
### 7. 検証チェックリスト
|
||||
|
||||
最終化前に確認:
|
||||
|
||||
- [ ] 300 行以下(できれば 100 行以下)
|
||||
- [ ] すべての行があらゆるセッションに適用される
|
||||
- [ ] スタイルやフォーマットのルールがない
|
||||
- [ ] コードスニペットがない(ファイル参照を使う)
|
||||
- [ ] コマンドが動作することを検証済み
|
||||
- [ ] 複雑なプロジェクトでプログレッシブディスクロージャを利用
|
||||
- [ ] 重要なハマりどころがドキュメント化されている
|
||||
- [ ] README.md と内容が重複していない
|
||||
|
||||
## 出力形式
|
||||
|
||||
### `create` または既定の場合:
|
||||
|
||||
1. プロジェクトを分析する
|
||||
2. 上記の構造に従って CLAUDE.md の草案を作る
|
||||
3. 草案をレビュー用に提示する
|
||||
4. 承認後、適切な場所へ書き込む
|
||||
|
||||
### `update` の場合:
|
||||
|
||||
1. 既存 CLAUDE.md を読む
|
||||
2. ベストプラクティスに照らして監査する
|
||||
3. 以下を特定する:
|
||||
- 削除する内容(スタイルルール、コードスニペット、タスク固有)
|
||||
- 凝縮する内容
|
||||
- 不足している必須情報
|
||||
4. 変更内容をレビュー用に提示する
|
||||
5. 承認後、変更を適用する
|
||||
|
||||
### `audit` の場合:
|
||||
|
||||
1. 既存 CLAUDE.md を読む
|
||||
2. 以下を含むレポートを生成する:
|
||||
- 現在の行数と目標値
|
||||
- 普遍的に適用可能なコンテンツの割合
|
||||
- 検出されたアンチパターンの一覧
|
||||
- 改善のための推奨
|
||||
3. ファイルを変更しない、レポートのみを行う
|
||||
|
||||
## AGENTS.md の取り扱い
|
||||
|
||||
ユーザーが AGENTS.md の作成・更新を求めた場合:
|
||||
|
||||
AGENTS.md は専門エージェントの振る舞いを定義するために用いられる。プロジェクトコンテキスト用の CLAUDE.md と異なり、AGENTS.md では以下を定義する:
|
||||
- カスタムエージェントの役割と能力
|
||||
- エージェント固有の命令と制約
|
||||
- マルチエージェントシナリオのワークフロー定義
|
||||
|
||||
同様の原則を適用する:
|
||||
- 焦点を絞り簡潔に保つ
|
||||
- プログレッシブディスクロージャを用いる
|
||||
- 内容を埋め込むのではなく外部ドキュメントを参照する
|
||||
|
||||
## 注意事項
|
||||
|
||||
- コマンドを含める前に必ず動作確認する
|
||||
- 迷ったら省略する。少ないほど良い
|
||||
- システムリマインダーは Claude に対して CLAUDE.md は「関係があるかどうかわからない」と告げている。ノイズが多いほど無視されやすい
|
||||
- モノレポは明確な WHAT/WHY/HOW 構造の恩恵が最も大きい
|
||||
- ディレクトリ固有の CLAUDE.md ファイルはさらに焦点を絞るべきである
|
||||
@@ -0,0 +1,74 @@
|
||||
<!-- i18n-source: 03-skills/code-review/SKILL.md -->
|
||||
<!-- i18n-source-sha: e978c49 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: code-review-specialist
|
||||
description: セキュリティ、パフォーマンス、品質分析を含む包括的なコードレビュー。コードレビュー、コード品質分析、プルリクエスト評価の依頼があった場合、またはコードレビュー、セキュリティ分析、パフォーマンス最適化について言及がある場合に使用する。
|
||||
---
|
||||
|
||||
# コードレビュー・スキル
|
||||
|
||||
このスキルは、以下に焦点を当てた包括的なコードレビュー機能を提供する。
|
||||
|
||||
1. **セキュリティ分析**
|
||||
- 認証・認可の問題
|
||||
- データ漏洩リスク
|
||||
- インジェクション脆弱性
|
||||
- 暗号の弱点
|
||||
- 機密データのロギング
|
||||
|
||||
2. **パフォーマンス・レビュー**
|
||||
- アルゴリズム効率(Big O 分析)
|
||||
- メモリ最適化
|
||||
- データベースクエリ最適化
|
||||
- キャッシュ機会
|
||||
- 並行性の問題
|
||||
|
||||
3. **コード品質**
|
||||
- SOLID 原則
|
||||
- デザインパターン
|
||||
- 命名規則
|
||||
- ドキュメント
|
||||
- テストカバレッジ
|
||||
|
||||
4. **保守性**
|
||||
- コードの可読性
|
||||
- 関数サイズ(50 行未満が望ましい)
|
||||
- 循環的複雑度
|
||||
- 依存関係管理
|
||||
- 型安全性
|
||||
|
||||
## レビュー・テンプレート
|
||||
|
||||
レビューしたコードごとに、以下を提供する。
|
||||
|
||||
### サマリー
|
||||
- 全体品質評価(1-5)
|
||||
- 主要な指摘件数
|
||||
- 推奨される優先領域
|
||||
|
||||
### クリティカルな問題(あれば)
|
||||
- **Issue**: 明確な説明
|
||||
- **Location**: ファイルと行番号
|
||||
- **Impact**: なぜ重要か
|
||||
- **Severity**: Critical/High/Medium
|
||||
- **Fix**: コード例
|
||||
|
||||
### カテゴリ別の指摘事項
|
||||
|
||||
#### セキュリティ(問題が見つかった場合)
|
||||
セキュリティ脆弱性を例示しながら列挙
|
||||
|
||||
#### パフォーマンス(問題が見つかった場合)
|
||||
複雑度分析を含めパフォーマンス問題を列挙
|
||||
|
||||
#### 品質(問題が見つかった場合)
|
||||
リファクタリング提案を含めコード品質の問題を列挙
|
||||
|
||||
#### 保守性(問題が見つかった場合)
|
||||
改善案を含め保守性の問題を列挙
|
||||
|
||||
## バージョン履歴
|
||||
|
||||
- v1.0.0 (2024-12-10): セキュリティ、パフォーマンス、品質、保守性分析を含む初回リリース
|
||||
@@ -0,0 +1,116 @@
|
||||
<!-- i18n-source: 03-skills/code-review/templates/finding-template.md -->
|
||||
<!-- i18n-source-sha: 6d1e0ae -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
# コードレビュー指摘事項テンプレート
|
||||
|
||||
コードレビュー中に見つけた各問題を文書化する際にこのテンプレートを使用する。
|
||||
|
||||
---
|
||||
|
||||
## Issue: [TITLE]
|
||||
|
||||
### 重要度
|
||||
- [ ] Critical(デプロイをブロック)
|
||||
- [ ] High(マージ前に修正すべき)
|
||||
- [ ] Medium(早期に修正すべき)
|
||||
- [ ] Low(あれば望ましい)
|
||||
|
||||
### カテゴリ
|
||||
- [ ] Security
|
||||
- [ ] Performance
|
||||
- [ ] Code Quality
|
||||
- [ ] Maintainability
|
||||
- [ ] Testing
|
||||
- [ ] Design Pattern
|
||||
- [ ] Documentation
|
||||
|
||||
### 場所
|
||||
**File:** `src/components/UserCard.tsx`
|
||||
|
||||
**Lines:** 45-52
|
||||
|
||||
**Function/Method:** `renderUserDetails()`
|
||||
|
||||
### 問題の説明
|
||||
|
||||
**What:** 問題の内容を記述する。
|
||||
|
||||
**Why it matters:** 影響と修正が必要な理由を説明する。
|
||||
|
||||
**Current behavior:** 問題のあるコードや挙動を示す。
|
||||
|
||||
**Expected behavior:** 代わりに期待される挙動を記述する。
|
||||
|
||||
### コード例
|
||||
|
||||
#### 現状(問題あり)
|
||||
|
||||
```typescript
|
||||
// N+1 クエリ問題を示す
|
||||
const users = fetchUsers();
|
||||
users.forEach(user => {
|
||||
const posts = fetchUserPosts(user.id); // ユーザーごとにクエリ!
|
||||
renderUserPosts(posts);
|
||||
});
|
||||
```
|
||||
|
||||
#### 修正案
|
||||
|
||||
```typescript
|
||||
// JOIN クエリで最適化
|
||||
const usersWithPosts = fetchUsersWithPosts();
|
||||
usersWithPosts.forEach(({ user, posts }) => {
|
||||
renderUserPosts(posts);
|
||||
});
|
||||
```
|
||||
|
||||
### 影響分析
|
||||
|
||||
| Aspect | Impact | Severity |
|
||||
|--------|--------|----------|
|
||||
| Performance | 20 ユーザーで 100 件以上のクエリ | High |
|
||||
| User Experience | ページ読み込みが遅い | High |
|
||||
| Scalability | 規模拡大で破綻 | Critical |
|
||||
| Maintainability | デバッグが困難 | Medium |
|
||||
|
||||
### 関連する問題
|
||||
|
||||
- `AdminUserList.tsx` 120 行目に類似の問題
|
||||
- 関連 PR: #456
|
||||
- 関連 issue: #789
|
||||
|
||||
### 追加リソース
|
||||
|
||||
- [N+1 Query Problem](https://en.wikipedia.org/wiki/N%2B1_problem)
|
||||
- [Database Join Documentation](https://docs.example.com/joins)
|
||||
|
||||
### レビュアーのメモ
|
||||
|
||||
- このコードベースでよく見られるパターンである
|
||||
- コードスタイルガイドへの追加を検討する
|
||||
- ヘルパー関数を作成する価値があるかもしれない
|
||||
|
||||
### 著者の応答(フィードバック用)
|
||||
|
||||
*コード作成者が記入する:*
|
||||
|
||||
- [ ] 修正実装コミット: `abc123`
|
||||
- [ ] 修正状況: Complete / In Progress / Needs Discussion
|
||||
- [ ] 質問や懸念: (記述)
|
||||
|
||||
---
|
||||
|
||||
## 指摘統計(レビュアー用)
|
||||
|
||||
複数の指摘をレビューする際は、以下を追跡する。
|
||||
|
||||
- **Total Issues Found:** X
|
||||
- **Critical:** X
|
||||
- **High:** X
|
||||
- **Medium:** X
|
||||
- **Low:** X
|
||||
|
||||
**Recommendation:** ✅ Approve / ⚠️ Request Changes / 🔄 Needs Discussion
|
||||
|
||||
**Overall Code Quality:** 1-5 stars
|
||||
@@ -0,0 +1,51 @@
|
||||
<!-- i18n-source: 03-skills/code-review/templates/review-checklist.md -->
|
||||
<!-- i18n-source-sha: 5caeff2 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
# コードレビュー・チェックリスト
|
||||
|
||||
## セキュリティ・チェックリスト
|
||||
- [ ] ハードコードされた認証情報や秘密情報がない
|
||||
- [ ] すべてのユーザー入力に対する入力検証
|
||||
- [ ] SQL インジェクション対策(パラメータ化クエリ)
|
||||
- [ ] 状態を変更する操作への CSRF 対策
|
||||
- [ ] 適切なエスケープによる XSS 対策
|
||||
- [ ] 保護されたエンドポイントでの認証チェック
|
||||
- [ ] リソースに対する認可チェック
|
||||
- [ ] 安全なパスワードハッシュ化(bcrypt、argon2)
|
||||
- [ ] ログに機密データを含めない
|
||||
- [ ] HTTPS の強制
|
||||
|
||||
## パフォーマンス・チェックリスト
|
||||
- [ ] N+1 クエリがない
|
||||
- [ ] インデックスの適切な利用
|
||||
- [ ] 効果的な箇所でのキャッシュ実装
|
||||
- [ ] メインスレッドでのブロッキング操作がない
|
||||
- [ ] async/await の正しい使用
|
||||
- [ ] 大規模データセットのページネーション
|
||||
- [ ] データベースコネクションプーリング
|
||||
- [ ] 正規表現の最適化
|
||||
- [ ] 不要なオブジェクト生成がない
|
||||
- [ ] メモリリーク対策
|
||||
|
||||
## 品質チェックリスト
|
||||
- [ ] 関数が 50 行未満
|
||||
- [ ] 明確な変数命名
|
||||
- [ ] 重複コードがない
|
||||
- [ ] 適切なエラーハンドリング
|
||||
- [ ] コメントは「何を」ではなく「なぜ」を説明
|
||||
- [ ] 本番環境に console.log がない
|
||||
- [ ] 型チェック(TypeScript/JSDoc)
|
||||
- [ ] SOLID 原則の遵守
|
||||
- [ ] デザインパターンの正しい適用
|
||||
- [ ] 自己説明的なコード
|
||||
|
||||
## テスト・チェックリスト
|
||||
- [ ] ユニットテストの記述
|
||||
- [ ] エッジケースの網羅
|
||||
- [ ] エラーシナリオのテスト
|
||||
- [ ] 統合テストの存在
|
||||
- [ ] カバレッジが 80% 以上
|
||||
- [ ] flaky テストがない
|
||||
- [ ] 外部依存のモック化
|
||||
- [ ] 明確なテスト名
|
||||
@@ -0,0 +1,80 @@
|
||||
<!-- i18n-source: 03-skills/doc-generator/SKILL.md -->
|
||||
<!-- i18n-source-sha: a6380d8 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: api-documentation-generator
|
||||
description: ソースコードから包括的かつ正確な API ドキュメントを生成する。API ドキュメントの作成・更新、OpenAPI 仕様の生成時、または API ドキュメント、エンドポイント、ドキュメントについて言及がある場合に使用する。
|
||||
---
|
||||
|
||||
# API ドキュメント生成スキル
|
||||
|
||||
## 生成するもの
|
||||
|
||||
- OpenAPI/Swagger 仕様
|
||||
- API エンドポイントのドキュメント
|
||||
- SDK 利用例
|
||||
- 統合ガイド
|
||||
- エラーコード・リファレンス
|
||||
- 認証ガイド
|
||||
|
||||
## ドキュメント構造
|
||||
|
||||
### 各エンドポイントごと
|
||||
|
||||
```markdown
|
||||
## GET /api/v1/users/:id
|
||||
|
||||
### Description
|
||||
このエンドポイントの動作を簡潔に説明
|
||||
|
||||
### Parameters
|
||||
|
||||
| Name | Type | Required | Description |
|
||||
|------|------|----------|-------------|
|
||||
| id | string | Yes | User ID |
|
||||
|
||||
### Response
|
||||
|
||||
**200 Success**
|
||||
```json
|
||||
{
|
||||
"id": "usr_123",
|
||||
"name": "John Doe",
|
||||
"email": "john@example.com",
|
||||
"created_at": "2025-01-15T10:30:00Z"
|
||||
}
|
||||
```
|
||||
|
||||
**404 Not Found**
|
||||
```json
|
||||
{
|
||||
"error": "USER_NOT_FOUND",
|
||||
"message": "User does not exist"
|
||||
}
|
||||
```
|
||||
|
||||
### Examples
|
||||
|
||||
**cURL**
|
||||
```bash
|
||||
curl -X GET "https://api.example.com/api/v1/users/usr_123" \
|
||||
-H "Authorization: Bearer YOUR_TOKEN"
|
||||
```
|
||||
|
||||
**JavaScript**
|
||||
```javascript
|
||||
const user = await fetch('/api/v1/users/usr_123', {
|
||||
headers: { 'Authorization': 'Bearer token' }
|
||||
}).then(r => r.json());
|
||||
```
|
||||
|
||||
**Python**
|
||||
```python
|
||||
response = requests.get(
|
||||
'https://api.example.com/api/v1/users/usr_123',
|
||||
headers={'Authorization': 'Bearer token'}
|
||||
)
|
||||
user = response.json()
|
||||
```
|
||||
```
|
||||
@@ -0,0 +1,429 @@
|
||||
<!-- i18n-source: 03-skills/refactor/SKILL.md -->
|
||||
<!-- i18n-source-sha: 245272f -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
---
|
||||
name: code-refactor
|
||||
description: Martin Fowler の方法論に基づく体系的なコードリファクタリング。ユーザーがコードのリファクタリング、コード構造の改善、技術的負債の削減、レガシーコードのクリーンアップ、コードスメルの解消、コード保守性の向上を求めた際に使用する。本スキルは、リサーチ・計画・安全な段階的実装からなる段階的アプローチを案内する。
|
||||
---
|
||||
|
||||
# コードリファクタリングスキル
|
||||
|
||||
Martin Fowler 著『Refactoring: Improving the Design of Existing Code』(第 2 版) に基づくコードリファクタリングへの体系的アプローチ。本スキルは、テストに支えられた安全で段階的な変更を重視する。
|
||||
|
||||
> "Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code yet improves its internal structure." — Martin Fowler
|
||||
|
||||
## 中核となる原則
|
||||
|
||||
1. **振る舞いの保全**: 外部から見える振る舞いは変えてはならない
|
||||
2. **小さなステップ**: テスト可能な微小な変更を積み重ねる
|
||||
3. **テスト駆動**: テストはセーフティネットである
|
||||
4. **継続的**: リファクタリングは一度きりの作業ではなく継続的に行う
|
||||
5. **協調的**: 各フェーズでユーザーの承認が必要
|
||||
|
||||
## ワークフロー概要
|
||||
|
||||
```
|
||||
Phase 1: Research & Analysis
|
||||
↓
|
||||
Phase 2: Test Coverage Assessment
|
||||
↓
|
||||
Phase 3: Code Smell Identification
|
||||
↓
|
||||
Phase 4: Refactoring Plan Creation
|
||||
↓
|
||||
Phase 5: Incremental Implementation
|
||||
↓
|
||||
Phase 6: Review & Iteration
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## フェーズ 1: リサーチと分析
|
||||
|
||||
### 目的
|
||||
- コードベースの構造と目的を把握する
|
||||
- リファクタリングの範囲を特定する
|
||||
- ビジネス要件に関するコンテキストを収集する
|
||||
|
||||
### ユーザーへの確認事項
|
||||
開始前に次の点を明確化する。
|
||||
|
||||
1. **範囲**: どのファイル/モジュール/関数をリファクタリングするのか?
|
||||
2. **目標**: 何を解決したいのか?(可読性、性能、保守性)
|
||||
3. **制約**: 変更してはいけない領域はあるか?
|
||||
4. **時間的圧力**: 他作業のブロッカーになっているか?
|
||||
5. **テスト状況**: テストは存在するか?パスしているか?
|
||||
|
||||
### アクション
|
||||
- [ ] 対象コードを読み、理解する
|
||||
- [ ] 依存関係と統合箇所を洗い出す
|
||||
- [ ] 現行アーキテクチャを文書化する
|
||||
- [ ] 既存の技術的負債マーカー(TODO、FIXME)を控える
|
||||
|
||||
### 出力
|
||||
ユーザーへの提示内容:
|
||||
- コード構造のサマリー
|
||||
- 検出された問題箇所
|
||||
- 初期推奨事項
|
||||
- **着手の承認を依頼する**
|
||||
|
||||
---
|
||||
|
||||
## フェーズ 2: テストカバレッジの評価
|
||||
|
||||
### なぜテストが重要か
|
||||
> "Refactoring without tests is like driving without a seatbelt." — Martin Fowler
|
||||
|
||||
テストは安全なリファクタリングを可能にする**鍵となる要素**である。テストがなければ、バグを混入させるリスクがある。
|
||||
|
||||
### 評価ステップ
|
||||
|
||||
1. **既存テストの確認**
|
||||
```bash
|
||||
# テストファイルを探す
|
||||
find . -name "*test*" -o -name "*spec*" | head -20
|
||||
```
|
||||
|
||||
2. **既存テストの実行**
|
||||
```bash
|
||||
# JavaScript/TypeScript
|
||||
npm test
|
||||
|
||||
# Python
|
||||
pytest -v
|
||||
|
||||
# Java
|
||||
mvn test
|
||||
```
|
||||
|
||||
3. **カバレッジの確認(可能な場合)**
|
||||
```bash
|
||||
# JavaScript
|
||||
npm run test:coverage
|
||||
|
||||
# Python
|
||||
pytest --cov=.
|
||||
```
|
||||
|
||||
### 判断ポイント: ユーザーへの確認
|
||||
|
||||
**テストが存在し、かつパスしている場合:**
|
||||
- フェーズ 3 へ進む
|
||||
|
||||
**テストが不足、または不完全な場合:**
|
||||
次の選択肢を提示する。
|
||||
1. 先にテストを書く(推奨)
|
||||
2. リファクタリング中に段階的にテストを追加する
|
||||
3. テストなしで進める(リスクあり、ユーザーの明示的同意が必要)
|
||||
|
||||
**テストが失敗している場合:**
|
||||
- STOP。リファクタリング前に失敗テストを修正する
|
||||
- ユーザーに確認: 先にテストを直すべきか?
|
||||
|
||||
### テスト作成のガイドライン(必要時)
|
||||
|
||||
リファクタリング対象の各関数について、以下をテストでカバーする。
|
||||
- ハッピーパス(通常動作)
|
||||
- エッジケース(空入力、null、境界値)
|
||||
- エラーシナリオ(無効入力、例外)
|
||||
|
||||
「red-green-refactor」サイクルを用いる。
|
||||
1. 失敗するテストを書く(red)
|
||||
2. パスさせる(green)
|
||||
3. リファクタリングする
|
||||
|
||||
---
|
||||
|
||||
## フェーズ 3: コードスメルの特定
|
||||
|
||||
### コードスメルとは?
|
||||
コードに潜むより深い問題の症状である。バグそのものではないが、コード改善の余地を示す指標となる。
|
||||
|
||||
### よくチェックすべきコードスメル
|
||||
|
||||
完全なカタログは [references/code-smells.md](references/code-smells.md) を参照。
|
||||
|
||||
#### クイックリファレンス
|
||||
|
||||
| スメル | 兆候 | 影響 |
|
||||
|-------|-------|--------|
|
||||
| **Long Method(長すぎる関数)** | メソッドが 30〜50 行を超える | 理解、テスト、保守が困難 |
|
||||
| **Duplicated Code(重複したコード)** | 同じロジックが複数箇所に存在 | バグ修正を複数箇所で行う必要がある |
|
||||
| **Large Class(巨大なクラス)** | 責務が多すぎるクラス | 単一責任原則に違反 |
|
||||
| **Feature Envy(機能の横恋慕)** | 他クラスのデータを多く使用するメソッド | カプセル化が不十分 |
|
||||
| **Primitive Obsession(プリミティブ型への執着)** | オブジェクト化すべき所をプリミティブで多用 | ドメイン概念が欠落 |
|
||||
| **Long Parameter List(長すぎるパラメータリスト)** | パラメータが 4 個以上 | 正しく呼び出すのが困難 |
|
||||
| **Data Clumps(データの群れ)** | 同じデータ項目が常に一緒に現れる | 抽象化が欠落 |
|
||||
| **Switch Statements(スイッチ文)** | 複雑な switch / if-else の連鎖 | 拡張が困難 |
|
||||
| **Speculative Generality(投機的一般化)** | 「念のため」のコード | 不要な複雑さ |
|
||||
| **Dead Code(デッドコード)** | 使われていないコード | 混乱と保守負担 |
|
||||
|
||||
### 分析ステップ
|
||||
|
||||
1. **自動分析**(スクリプトが利用可能な場合)
|
||||
```bash
|
||||
python scripts/detect-smells.py <file>
|
||||
```
|
||||
|
||||
2. **手動レビュー**
|
||||
- コードを体系的に読み進める
|
||||
- 各スメルを場所と深刻度とともに記録する
|
||||
- 影響度別に分類する(Critical / High / Medium / Low)
|
||||
|
||||
3. **優先順位付け**
|
||||
次のようなスメルに注力する。
|
||||
- 現在の開発をブロックしているもの
|
||||
- バグや混乱を引き起こしているもの
|
||||
- 変更頻度が高いコードパスに影響するもの
|
||||
|
||||
### 出力: スメルレポート
|
||||
|
||||
ユーザーへの提示内容:
|
||||
- 検出されたスメルの一覧と場所
|
||||
- 各スメルの深刻度評価
|
||||
- 推奨される優先順位
|
||||
- **優先順位の承認を依頼する**
|
||||
|
||||
---
|
||||
|
||||
## フェーズ 4: リファクタリング計画の作成
|
||||
|
||||
### リファクタリング技法の選定
|
||||
|
||||
各スメルに対して、カタログから適切なリファクタリング技法を選ぶ。
|
||||
|
||||
完全な一覧は [references/refactoring-catalog.md](references/refactoring-catalog.md) を参照。
|
||||
|
||||
#### スメル別の推奨リファクタリング
|
||||
|
||||
| コードスメル | 推奨リファクタリング |
|
||||
|------------|---------------------------|
|
||||
| Long Method(長すぎる関数) | メソッドの抽出、Replace Temp with Query |
|
||||
| Duplicated Code(重複したコード) | メソッドの抽出、Pull Up Method、Form Template Method |
|
||||
| Large Class(巨大なクラス) | クラスの抽出、Extract Subclass |
|
||||
| Feature Envy(機能の横恋慕) | Move Method、Move Field |
|
||||
| Primitive Obsession(プリミティブ型への執着) | Replace Primitive with Object、Replace Type Code with Class |
|
||||
| Long Parameter List(長すぎるパラメータリスト) | パラメータオブジェクトの導入、Preserve Whole Object |
|
||||
| Data Clumps(データの群れ) | クラスの抽出、パラメータオブジェクトの導入 |
|
||||
| Switch Statements(スイッチ文) | ポリモーフィズムによる条件記述の置き換え |
|
||||
| Speculative Generality(投機的一般化) | Collapse Hierarchy、Inline Class、デッドコードの削除 |
|
||||
| Dead Code(デッドコード) | デッドコードの削除 |
|
||||
|
||||
### 計画の構成
|
||||
|
||||
[templates/refactoring-plan.md](templates/refactoring-plan.md) のテンプレートを使用する。
|
||||
|
||||
各リファクタリングごとに次の項目を埋める。
|
||||
1. **対象**: 何を変更するか
|
||||
2. **スメル**: どの問題に対処するか
|
||||
3. **リファクタリング**: どの技法を適用するか
|
||||
4. **手順**: 細かいマイクロステップ
|
||||
5. **リスク**: 何が失敗しうるか
|
||||
6. **ロールバック**: 取り消す方法
|
||||
|
||||
### 段階的アプローチ
|
||||
|
||||
**重要**: リファクタリングはフェーズに分けて段階的に導入する。
|
||||
|
||||
**フェーズ A: クイックウィン**(低リスク、高価値)
|
||||
- 明確化のための変数名変更
|
||||
- 明らかな重複コードの抽出
|
||||
- デッドコードの削除
|
||||
|
||||
**フェーズ B: 構造改善**(中リスク)
|
||||
- 長すぎる関数からのメソッド抽出
|
||||
- パラメータオブジェクトの導入
|
||||
- メソッドを適切なクラスへ移動
|
||||
|
||||
**フェーズ C: アーキテクチャ変更**(高リスク)
|
||||
- 条件分岐をポリモーフィズムで置換
|
||||
- クラスの抽出
|
||||
- デザインパターンの導入
|
||||
|
||||
### 判断ポイント: ユーザーへの計画提示
|
||||
|
||||
実装前に:
|
||||
- 完全なリファクタリング計画を提示する
|
||||
- 各フェーズの内容とリスクを説明する
|
||||
- 各フェーズについて明示的な承認を得る
|
||||
- **質問**: 「フェーズ A を進めてもよいか?」
|
||||
|
||||
---
|
||||
|
||||
## フェーズ 5: 段階的な実装
|
||||
|
||||
### ゴールデンルール
|
||||
> "Change → Test → Green? → Commit → Next step"
|
||||
|
||||
### 実装のリズム
|
||||
|
||||
各リファクタリングステップで:
|
||||
|
||||
1. **事前チェック**
|
||||
- テストがパスしている(green)
|
||||
- コードがコンパイルできる
|
||||
|
||||
2. **小さな変更を 1 つだけ行う**
|
||||
- カタログのメカニクスに従う
|
||||
- 変更は最小限に保つ
|
||||
|
||||
3. **検証**
|
||||
- 直ちにテストを実行
|
||||
- コンパイルエラーがないか確認
|
||||
|
||||
4. **テストがパス(green)した場合**
|
||||
- 説明的なコミットメッセージでコミット
|
||||
- 次のステップへ進む
|
||||
|
||||
5. **テストが失敗(red)した場合**
|
||||
- 直ちに STOP
|
||||
- 変更を取り消す
|
||||
- 何が起きたかを分析する
|
||||
- 不明な場合はユーザーに確認する
|
||||
|
||||
### コミット戦略
|
||||
|
||||
各コミットは次の性質を満たすこと。
|
||||
- **アトミック**: 論理的に 1 つの変更
|
||||
- **可逆**: 容易に revert できる
|
||||
- **説明的**: 明確なコミットメッセージ
|
||||
|
||||
コミットメッセージ例:
|
||||
```
|
||||
refactor: Extract calculateTotal() from processOrder()
|
||||
refactor: Rename 'x' to 'customerCount' for clarity
|
||||
refactor: Remove unused validateOldFormat() method
|
||||
```
|
||||
|
||||
### 進捗報告
|
||||
|
||||
サブフェーズごとに、ユーザーへ次を報告する。
|
||||
- 行った変更
|
||||
- テストはまだパスしているか
|
||||
- 発生した問題
|
||||
- **質問**: 「次のバッチへ進めてもよいか?」
|
||||
|
||||
---
|
||||
|
||||
## フェーズ 6: レビューと反復
|
||||
|
||||
### リファクタリング後チェックリスト
|
||||
|
||||
- [ ] 全テストがパスする
|
||||
- [ ] 新たな警告/エラーが出ていない
|
||||
- [ ] コードが正常にコンパイルできる
|
||||
- [ ] 振る舞いが変わっていない(手動検証)
|
||||
- [ ] 必要に応じてドキュメントが更新されている
|
||||
- [ ] コミット履歴が整理されている
|
||||
|
||||
### メトリクス比較
|
||||
|
||||
リファクタリング前後で複雑度解析を実施する。
|
||||
```bash
|
||||
python scripts/analyze-complexity.py <file>
|
||||
```
|
||||
|
||||
改善点を提示する。
|
||||
- コード行数の変化
|
||||
- 循環的複雑度の変化
|
||||
- 保守性指数の変化
|
||||
|
||||
### ユーザーレビュー
|
||||
|
||||
最終結果を提示する。
|
||||
- 全変更のサマリー
|
||||
- Before / After のコード比較
|
||||
- メトリクスの改善
|
||||
- 残る技術的負債
|
||||
- **質問**: 「この変更内容で問題ないか?」
|
||||
|
||||
### 次のステップ
|
||||
|
||||
ユーザーと議論する。
|
||||
- 追加で対処すべきスメルはあるか?
|
||||
- フォローアップのリファクタリングを計画するか?
|
||||
- 同様の変更を他箇所にも適用するか?
|
||||
|
||||
---
|
||||
|
||||
## 重要なガイドライン
|
||||
|
||||
### STOP してユーザーに相談すべきタイミング
|
||||
|
||||
次の場合、必ず一旦止まりユーザーに相談する。
|
||||
- ビジネスロジックに不確実性がある
|
||||
- 外部 API に影響しうる変更
|
||||
- テストカバレッジが不十分
|
||||
- 重大なアーキテクチャ判断が必要
|
||||
- リスクレベルが上昇する
|
||||
- 想定外の複雑さに遭遇した
|
||||
|
||||
### 安全のためのルール
|
||||
|
||||
1. **テストなしでリファクタリングしない**(ユーザーが明示的にリスクを受容しない限り)
|
||||
2. **大きな変更を一度にしない** - 微小なステップに分割する
|
||||
3. **各変更後のテスト実行を省略しない**
|
||||
4. **テスト失敗時は続行しない** - 修正かロールバックを先に行う
|
||||
5. **思い込みで進めない** - 疑問があれば確認する
|
||||
|
||||
### やってはいけないこと
|
||||
|
||||
- リファクタリングと機能追加を同時に行わない
|
||||
- 本番障害対応中にリファクタリングしない
|
||||
- 理解していないコードをリファクタリングしない
|
||||
- 過剰設計をしない - シンプルに保つ
|
||||
- 全てを一度にリファクタリングしない
|
||||
|
||||
---
|
||||
|
||||
## クイックスタート例
|
||||
|
||||
### シナリオ: 重複を含む長い関数
|
||||
|
||||
**Before:**
|
||||
```javascript
|
||||
function processOrder(order) {
|
||||
// 150 行のコードに以下が混在:
|
||||
// - 重複したバリデーションロジック
|
||||
// - インラインの計算処理
|
||||
// - 複数の責務
|
||||
}
|
||||
```
|
||||
|
||||
**リファクタリング手順:**
|
||||
|
||||
1. processOrder() に対する**テストの存在を確認**
|
||||
2. バリデーションを validateOrder() に**抽出**
|
||||
3. **テスト** - パスすること
|
||||
4. 計算を calculateOrderTotal() に**抽出**
|
||||
5. **テスト** - パスすること
|
||||
6. 通知を notifyCustomer() に**抽出**
|
||||
7. **テスト** - パスすること
|
||||
8. **レビュー** - processOrder() は明確な 3 関数の調整役となる
|
||||
|
||||
**After:**
|
||||
```javascript
|
||||
function processOrder(order) {
|
||||
validateOrder(order);
|
||||
const total = calculateOrderTotal(order);
|
||||
notifyCustomer(order, total);
|
||||
return { order, total };
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 参考文献
|
||||
|
||||
- [Code Smells Catalog](references/code-smells.md) - コードスメルの完全な一覧
|
||||
- [Refactoring Catalog](references/refactoring-catalog.md) - リファクタリング技法
|
||||
- [Refactoring Plan Template](templates/refactoring-plan.md) - 計画用テンプレート
|
||||
|
||||
## スクリプト
|
||||
|
||||
- `scripts/analyze-complexity.py` - コード複雑度メトリクスの分析
|
||||
- `scripts/detect-smells.py` - スメルの自動検出
|
||||
|
||||
## バージョン履歴
|
||||
|
||||
- v1.0.0 (2025-01-15): Fowler の方法論、段階的アプローチ、ユーザー相談ポイントを備えた初版リリース
|
||||
@@ -0,0 +1,672 @@
|
||||
<!-- i18n-source: 03-skills/refactor/references/code-smells.md -->
|
||||
<!-- i18n-source-sha: 245272f -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
# コードスメルカタログ
|
||||
|
||||
Martin Fowler 著『Refactoring』(第 2 版) に基づく、コードスメルの包括的なリファレンスである。コードスメルはより深い問題の症状であり、コード設計に何か問題がある可能性を示す指標となる。
|
||||
|
||||
> "A code smell is a surface indication that usually corresponds to a deeper problem in the system." — Martin Fowler
|
||||
|
||||
---
|
||||
|
||||
## Bloaters(肥満児)
|
||||
|
||||
効果的に扱うには大きくなりすぎたものを表すコードスメル群である。
|
||||
|
||||
### Long Method(長すぎる関数)
|
||||
|
||||
**兆候:**
|
||||
- メソッドが 30〜50 行を超える
|
||||
- メソッド全体を見るのにスクロールが必要
|
||||
- ネストが多重になっている
|
||||
- セクションごとに何をしているかを説明するコメントがある
|
||||
|
||||
**なぜ悪いか:**
|
||||
- 理解しづらい
|
||||
- 単独でテストするのが難しい
|
||||
- 変更が予期しない影響を及ぼす
|
||||
- 内部に重複ロジックが隠れる
|
||||
|
||||
**リファクタリング:**
|
||||
- メソッドの抽出
|
||||
- Replace Temp with Query
|
||||
- パラメータオブジェクトの導入
|
||||
- Replace Method with Method Object
|
||||
- 条件記述の分解
|
||||
|
||||
**例(Before):**
|
||||
```javascript
|
||||
function processOrder(order) {
|
||||
// 注文の検証 (20 行)
|
||||
if (!order.items) throw new Error('No items');
|
||||
if (order.items.length === 0) throw new Error('Empty order');
|
||||
// ... さらに検証
|
||||
|
||||
// 合計金額の計算 (30 行)
|
||||
let subtotal = 0;
|
||||
for (const item of order.items) {
|
||||
subtotal += item.price * item.quantity;
|
||||
}
|
||||
// ... 税、送料、割引
|
||||
|
||||
// 通知の送信 (20 行)
|
||||
// ... メール送信ロジック
|
||||
}
|
||||
```
|
||||
|
||||
**例(After):**
|
||||
```javascript
|
||||
function processOrder(order) {
|
||||
validateOrder(order);
|
||||
const totals = calculateOrderTotals(order);
|
||||
sendOrderNotifications(order, totals);
|
||||
return { order, totals };
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Large Class(巨大なクラス)
|
||||
|
||||
**兆候:**
|
||||
- クラスのインスタンス変数が多い(7〜10 個超)
|
||||
- クラスのメソッドが多い(15〜20 個超)
|
||||
- クラス名が漠然としている(Manager、Handler、Processor)
|
||||
- 全インスタンス変数を使わないメソッドがある
|
||||
|
||||
**なぜ悪いか:**
|
||||
- 単一責任原則に違反する
|
||||
- テストが困難
|
||||
- 変更が無関係な機能にも波及する
|
||||
- 部分的な再利用が難しい
|
||||
|
||||
**リファクタリング:**
|
||||
- クラスの抽出
|
||||
- Extract Subclass
|
||||
- Extract Interface
|
||||
|
||||
**検出基準:**
|
||||
```
|
||||
コード行数 > 300
|
||||
メソッド数 > 15
|
||||
フィールド数 > 10
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Primitive Obsession(プリミティブ型への執着)
|
||||
|
||||
**兆候:**
|
||||
- ドメイン概念にプリミティブを使う(メールに string、金額に int)
|
||||
- オブジェクトでなくプリミティブの配列を使う
|
||||
- タイプコードに文字列定数を使う
|
||||
- マジックナンバーやマジックストリング
|
||||
|
||||
**なぜ悪いか:**
|
||||
- 型レベルでの検証ができない
|
||||
- ロジックがコードベース全体に散らばる
|
||||
- 誤った値を渡しやすい
|
||||
- ドメイン概念が欠落する
|
||||
|
||||
**リファクタリング:**
|
||||
- Replace Primitive with Object
|
||||
- Replace Type Code with Class
|
||||
- Replace Type Code with Subclasses
|
||||
- Replace Type Code with State/Strategy
|
||||
|
||||
**例(Before):**
|
||||
```javascript
|
||||
const user = {
|
||||
email: 'john@example.com', // 単なる文字列
|
||||
phone: '1234567890', // 単なる文字列
|
||||
status: 'active', // マジックストリング
|
||||
balance: 10050 // セント単位の整数
|
||||
};
|
||||
```
|
||||
|
||||
**例(After):**
|
||||
```javascript
|
||||
const user = {
|
||||
email: new Email('john@example.com'),
|
||||
phone: new PhoneNumber('1234567890'),
|
||||
status: UserStatus.ACTIVE,
|
||||
balance: Money.cents(10050)
|
||||
};
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Long Parameter List(長すぎるパラメータリスト)
|
||||
|
||||
**兆候:**
|
||||
- パラメータが 4 個以上のメソッド
|
||||
- 常に一緒に現れるパラメータ
|
||||
- メソッドの振る舞いを切り替える真偽値フラグ
|
||||
- null/undefined が頻繁に渡される
|
||||
|
||||
**なぜ悪いか:**
|
||||
- 正しく呼び出すのが難しい
|
||||
- 引数順序の混乱を招く
|
||||
- メソッドが多くを抱え込んでいるサイン
|
||||
- パラメータの追加が難しい
|
||||
|
||||
**リファクタリング:**
|
||||
- パラメータオブジェクトの導入
|
||||
- Preserve Whole Object
|
||||
- Replace Parameter with Method Call
|
||||
- Remove Flag Argument
|
||||
|
||||
**例(Before):**
|
||||
```javascript
|
||||
function createUser(firstName, lastName, email, phone,
|
||||
street, city, state, zip,
|
||||
isAdmin, isActive, createdBy) {
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
**例(After):**
|
||||
```javascript
|
||||
function createUser(personalInfo, address, options) {
|
||||
// personalInfo: { firstName, lastName, email, phone }
|
||||
// address: { street, city, state, zip }
|
||||
// options: { isAdmin, isActive, createdBy }
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Data Clumps(データの群れ)
|
||||
|
||||
**兆候:**
|
||||
- 同じ 3 個以上のフィールドが繰り返し一緒に現れる
|
||||
- 常に一緒に渡されるパラメータ群
|
||||
- 一塊として属するべきフィールド集合を持つクラス
|
||||
|
||||
**なぜ悪いか:**
|
||||
- 取り扱いロジックが重複する
|
||||
- 抽象化が欠けている
|
||||
- 拡張しづらい
|
||||
- 隠れたクラスの存在を示す
|
||||
|
||||
**リファクタリング:**
|
||||
- クラスの抽出
|
||||
- パラメータオブジェクトの導入
|
||||
- Preserve Whole Object
|
||||
|
||||
**例:**
|
||||
```javascript
|
||||
// データの群れ: (x, y, z) 座標
|
||||
function movePoint(x, y, z, dx, dy, dz) { }
|
||||
function scalePoint(x, y, z, factor) { }
|
||||
function distanceBetween(x1, y1, z1, x2, y2, z2) { }
|
||||
|
||||
// Point3D クラスを抽出
|
||||
class Point3D {
|
||||
constructor(x, y, z) { }
|
||||
move(delta) { }
|
||||
scale(factor) { }
|
||||
distanceTo(other) { }
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Object-Orientation Abusers(オブジェクト指向の濫用者)
|
||||
|
||||
オブジェクト指向の原則を不完全または誤って使っていることを示すスメル群である。
|
||||
|
||||
### Switch Statements(スイッチ文)
|
||||
|
||||
**兆候:**
|
||||
- 長い switch/case や if/else の連鎖
|
||||
- 同じ switch が複数箇所に存在
|
||||
- タイプコードに対する switch
|
||||
- 新ケース追加で各所を変更する必要がある
|
||||
|
||||
**なぜ悪いか:**
|
||||
- 開放閉鎖原則に違反する
|
||||
- 全ての switch 箇所に変更が波及する
|
||||
- 拡張が困難
|
||||
- ポリモーフィズム不在のサインであることが多い
|
||||
|
||||
**リファクタリング:**
|
||||
- ポリモーフィズムによる条件記述の置き換え
|
||||
- Replace Type Code with Subclasses
|
||||
- Replace Type Code with State/Strategy
|
||||
|
||||
**例(Before):**
|
||||
```javascript
|
||||
function calculatePay(employee) {
|
||||
switch (employee.type) {
|
||||
case 'hourly':
|
||||
return employee.hours * employee.rate;
|
||||
case 'salaried':
|
||||
return employee.salary / 12;
|
||||
case 'commissioned':
|
||||
return employee.sales * employee.commission;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**例(After):**
|
||||
```javascript
|
||||
class HourlyEmployee {
|
||||
calculatePay() {
|
||||
return this.hours * this.rate;
|
||||
}
|
||||
}
|
||||
|
||||
class SalariedEmployee {
|
||||
calculatePay() {
|
||||
return this.salary / 12;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Temporary Field(一時的フィールド)
|
||||
|
||||
**兆候:**
|
||||
- 一部のメソッドでのみ使用されるインスタンス変数
|
||||
- 条件付きで設定されるフィールド
|
||||
- 特定ケースのために複雑な初期化を要する
|
||||
|
||||
**なぜ悪いか:**
|
||||
- 紛らわしい - フィールドが存在するが null の場合がある
|
||||
- オブジェクトの状態が理解しづらい
|
||||
- 隠れた条件分岐ロジックを示す
|
||||
|
||||
**リファクタリング:**
|
||||
- クラスの抽出
|
||||
- Introduce Null Object
|
||||
- Replace Temp Field with Local
|
||||
|
||||
---
|
||||
|
||||
### Refused Bequest(相続拒否)
|
||||
|
||||
**兆候:**
|
||||
- サブクラスが継承したメソッド/データを使わない
|
||||
- サブクラスがオーバーライドして何もしない
|
||||
- IS-A 関係ではなくコード再利用目的の継承
|
||||
|
||||
**なぜ悪いか:**
|
||||
- 抽象化が誤っている
|
||||
- リスコフの置換原則に違反する
|
||||
- 階層が誤解を招く
|
||||
|
||||
**リファクタリング:**
|
||||
- Push Down Method/Field
|
||||
- Replace Subclass with Delegate
|
||||
- Replace Inheritance with Delegation
|
||||
|
||||
---
|
||||
|
||||
### Alternative Classes with Different Interfaces(異なるインターフェイスの代替クラス)
|
||||
|
||||
**兆候:**
|
||||
- 似たことをする 2 つのクラス
|
||||
- 同じ概念に異なるメソッド名を使っている
|
||||
- 互いに置換可能だが共通インターフェイスがない
|
||||
|
||||
**なぜ悪いか:**
|
||||
- 実装が重複する
|
||||
- 共通インターフェイスがない
|
||||
- 切り替えが難しい
|
||||
|
||||
**リファクタリング:**
|
||||
- Rename Method
|
||||
- Move Method
|
||||
- Extract Superclass
|
||||
- Extract Interface
|
||||
|
||||
---
|
||||
|
||||
## Change Preventers(変更の妨げ)
|
||||
|
||||
変更を困難にするスメル群 - ある変更のために他の多くを変える必要が生じる。
|
||||
|
||||
### Divergent Change(変更の発散)
|
||||
|
||||
**兆候:**
|
||||
- 1 つのクラスが異なる複数の理由で変更される
|
||||
- 異なる領域の変更が同じクラスへの編集を引き起こす
|
||||
- そのクラスは「神クラス」化している
|
||||
|
||||
**なぜ悪いか:**
|
||||
- 単一責任原則に違反する
|
||||
- 変更頻度が高くなる
|
||||
- マージコンフリクトを招く
|
||||
|
||||
**リファクタリング:**
|
||||
- クラスの抽出
|
||||
- Extract Superclass
|
||||
- Extract Subclass
|
||||
|
||||
**例:**
|
||||
`User` クラスが次の理由で変更される:
|
||||
- 認証の変更
|
||||
- プロフィールの変更
|
||||
- 課金の変更
|
||||
- 通知の変更
|
||||
|
||||
→ 抽出: `AuthService`、`ProfileService`、`BillingService`、`NotificationService`
|
||||
|
||||
---
|
||||
|
||||
### Shotgun Surgery(散弾銃手術)
|
||||
|
||||
**兆候:**
|
||||
- 1 つの変更で多くのクラスへの編集が必要
|
||||
- 小さな機能でも 10 ファイル以上に手を入れる
|
||||
- 変更箇所が散在し、すべてを見つけにくい
|
||||
|
||||
**なぜ悪いか:**
|
||||
- 修正漏れが起きやすい
|
||||
- 結合度が高い
|
||||
- 変更がエラーを誘発しやすい
|
||||
|
||||
**リファクタリング:**
|
||||
- Move Method
|
||||
- Move Field
|
||||
- Inline Class
|
||||
|
||||
**検出基準:**
|
||||
1 フィールドの追加で 5 ファイル以上の変更が必要かを確認する。
|
||||
|
||||
---
|
||||
|
||||
### Parallel Inheritance Hierarchies(並行継承階層)
|
||||
|
||||
**兆候:**
|
||||
- 一方の階層にサブクラスを作ると、もう一方にも作る必要がある
|
||||
- クラス名のプレフィックスが揃っている(例: `DatabaseOrder`、`DatabaseProduct`)
|
||||
|
||||
**なぜ悪いか:**
|
||||
- 保守コストが倍になる
|
||||
- 階層間の結合度が高い
|
||||
- 片側を忘れやすい
|
||||
|
||||
**リファクタリング:**
|
||||
- Move Method
|
||||
- Move Field
|
||||
- 一方の階層を削除する
|
||||
|
||||
---
|
||||
|
||||
## Dispensables(不要物)
|
||||
|
||||
不要であり削除すべきものを表すスメル群である。
|
||||
|
||||
### Comments(過剰なコメント)
|
||||
|
||||
**兆候:**
|
||||
- コードが何をしているかを説明するコメント
|
||||
- コメントアウトされたコード
|
||||
- 永遠に残る TODO/FIXME
|
||||
- 言い訳のコメント
|
||||
|
||||
**なぜ悪いか:**
|
||||
- コメントは嘘をつく(コードと乖離する)
|
||||
- コードは自己文書化されているべき
|
||||
- 死んだコードは混乱を生む
|
||||
|
||||
**リファクタリング:**
|
||||
- メソッドの抽出(名前で「何」を表す)
|
||||
- Rename(コメントなしで明確化)
|
||||
- コメントアウトされたコードの削除
|
||||
- Introduce Assertion
|
||||
|
||||
**良いコメントと悪いコメント:**
|
||||
```javascript
|
||||
// 悪い: 「何」を説明している
|
||||
// users をループしてアクティブかどうか確認
|
||||
for (const user of users) {
|
||||
if (user.status === 'active') { }
|
||||
}
|
||||
|
||||
// 良い: 「なぜ」を説明している
|
||||
// アクティブなユーザーのみ。非アクティブはクリーンアップジョブで処理される
|
||||
const activeUsers = users.filter(u => u.isActive);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Duplicate Code(重複したコード)
|
||||
|
||||
**兆候:**
|
||||
- 同じコードが複数箇所にある
|
||||
- わずかな違いだけの似たコード
|
||||
- コピペのパターン
|
||||
|
||||
**なぜ悪いか:**
|
||||
- バグ修正を複数箇所で行う必要がある
|
||||
- 不整合のリスク
|
||||
- コードベースが肥大化する
|
||||
|
||||
**リファクタリング:**
|
||||
- メソッドの抽出
|
||||
- クラスの抽出
|
||||
- Pull Up Method(階層内)
|
||||
- Form Template Method
|
||||
|
||||
**検出ルール:**
|
||||
3 回以上重複するコードは抽出すべきである。
|
||||
|
||||
---
|
||||
|
||||
### Lazy Class(怠け者のクラス)
|
||||
|
||||
**兆候:**
|
||||
- クラスが存在を正当化できるほど働いていない
|
||||
- 付加価値のないラッパー
|
||||
- 過剰設計の結果
|
||||
|
||||
**なぜ悪いか:**
|
||||
- 保守オーバーヘッド
|
||||
- 不要な間接参照
|
||||
- メリットなき複雑さ
|
||||
|
||||
**リファクタリング:**
|
||||
- Inline Class
|
||||
- Collapse Hierarchy
|
||||
|
||||
---
|
||||
|
||||
### Dead Code(デッドコード)
|
||||
|
||||
**兆候:**
|
||||
- 到達不能なコード
|
||||
- 使われていない変数/メソッド/クラス
|
||||
- コメントアウトされたコード
|
||||
- 起こり得ない条件下にあるコード
|
||||
|
||||
**なぜ悪いか:**
|
||||
- 混乱を招く
|
||||
- 保守の負担
|
||||
- 理解の速度を落とす
|
||||
|
||||
**リファクタリング:**
|
||||
- デッドコードの削除
|
||||
- Safe Delete
|
||||
|
||||
**検出基準:**
|
||||
```bash
|
||||
# 未使用のエクスポートを探す
|
||||
# 参照されない関数を探す
|
||||
# IDE の「未使用」警告を確認
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Speculative Generality(投機的一般化)
|
||||
|
||||
**兆候:**
|
||||
- サブクラスが 1 つしかない抽象クラス
|
||||
- 「将来のため」の未使用パラメータ
|
||||
- 委譲のみのメソッド
|
||||
- 1 用途しかない「フレームワーク」
|
||||
|
||||
**なぜ悪いか:**
|
||||
- メリットなき複雑さ
|
||||
- YAGNI(You Ain't Gonna Need It)
|
||||
- 理解しづらい
|
||||
|
||||
**リファクタリング:**
|
||||
- Collapse Hierarchy
|
||||
- Inline Class
|
||||
- Remove Parameter
|
||||
- Rename Method
|
||||
|
||||
---
|
||||
|
||||
## Couplers(結合の問題)
|
||||
|
||||
クラス間の過剰な結合を表すスメル群である。
|
||||
|
||||
### Feature Envy(機能の横恋慕)
|
||||
|
||||
**兆候:**
|
||||
- メソッドが自クラスより他クラスのデータを多く使う
|
||||
- 他オブジェクトへの getter 呼び出しが多い
|
||||
- データと振る舞いが分離している
|
||||
|
||||
**なぜ悪いか:**
|
||||
- 振る舞いの置き場所が誤っている
|
||||
- カプセル化が不十分
|
||||
- 保守が難しい
|
||||
|
||||
**リファクタリング:**
|
||||
- Move Method
|
||||
- Move Field
|
||||
- メソッドの抽出(その後 move)
|
||||
|
||||
**例(Before):**
|
||||
```javascript
|
||||
class Order {
|
||||
getDiscountedPrice(customer) {
|
||||
// customer のデータを多く使っている
|
||||
if (customer.loyaltyYears > 5) {
|
||||
return this.price * customer.discountRate;
|
||||
}
|
||||
return this.price;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**例(After):**
|
||||
```javascript
|
||||
class Customer {
|
||||
getDiscountedPriceFor(price) {
|
||||
if (this.loyaltyYears > 5) {
|
||||
return price * this.discountRate;
|
||||
}
|
||||
return price;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Inappropriate Intimacy(不適切な親密さ)
|
||||
|
||||
**兆候:**
|
||||
- クラスが互いのプライベート部分にアクセスする
|
||||
- 双方向の参照
|
||||
- サブクラスが親について詳しすぎる
|
||||
|
||||
**なぜ悪いか:**
|
||||
- 結合度が高い
|
||||
- 変更が連鎖する
|
||||
- 一方を変えると他方も変える必要がある
|
||||
|
||||
**リファクタリング:**
|
||||
- Move Method
|
||||
- Move Field
|
||||
- Change Bidirectional to Unidirectional
|
||||
- クラスの抽出
|
||||
- Hide Delegate
|
||||
|
||||
---
|
||||
|
||||
### Message Chains(メッセージの連鎖)
|
||||
|
||||
**兆候:**
|
||||
- メソッド呼び出しの長い連鎖: `a.getB().getC().getD().getValue()`
|
||||
- クライアントがナビゲーション構造に依存している
|
||||
- 「列車事故」コード
|
||||
|
||||
**なぜ悪いか:**
|
||||
- 脆弱 - 連鎖中のいずれかが変わると壊れる
|
||||
- デメテルの法則に違反する
|
||||
- 構造への結合
|
||||
|
||||
**リファクタリング:**
|
||||
- Hide Delegate
|
||||
- メソッドの抽出
|
||||
- Move Method
|
||||
|
||||
**例:**
|
||||
```javascript
|
||||
// 悪い: メッセージの連鎖
|
||||
const managerName = employee.getDepartment().getManager().getName();
|
||||
|
||||
// 良い: 委譲を隠す
|
||||
const managerName = employee.getManagerName();
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Middle Man(仲介人)
|
||||
|
||||
**兆候:**
|
||||
- 他クラスへ委譲するだけのクラス
|
||||
- メソッドの半数が委譲
|
||||
- 付加価値がない
|
||||
|
||||
**なぜ悪いか:**
|
||||
- 不要な間接参照
|
||||
- 保守オーバーヘッド
|
||||
- アーキテクチャが分かりにくい
|
||||
|
||||
**リファクタリング:**
|
||||
- Remove Middle Man
|
||||
- メソッドのインライン化
|
||||
|
||||
---
|
||||
|
||||
## スメル深刻度ガイド
|
||||
|
||||
| 深刻度 | 説明 | 対応 |
|
||||
|----------|-------------|--------|
|
||||
| **Critical** | 開発をブロックし、バグの原因となる | 直ちに修正 |
|
||||
| **High** | 保守負担が大きい | 当該スプリント中に修正 |
|
||||
| **Medium** | 目に付くが許容範囲 | 近い将来に計画 |
|
||||
| **Low** | 軽微な不便 | 機会があれば修正 |
|
||||
|
||||
---
|
||||
|
||||
## 簡易検出チェックリスト
|
||||
|
||||
コードをスキャンする際に使うチェックリストである。
|
||||
|
||||
- [ ] 30 行を超えるメソッドはあるか?
|
||||
- [ ] 300 行を超えるクラスはあるか?
|
||||
- [ ] 4 個を超えるパラメータを持つメソッドはあるか?
|
||||
- [ ] 重複したコードブロックはあるか?
|
||||
- [ ] タイプコードに対する switch/case はあるか?
|
||||
- [ ] 使われていないコードはあるか?
|
||||
- [ ] 他クラスのデータを多く使っているメソッドはあるか?
|
||||
- [ ] メソッド呼び出しの長い連鎖はあるか?
|
||||
- [ ] 「なぜ」ではなく「何」を説明しているコメントはあるか?
|
||||
- [ ] オブジェクト化すべきプリミティブはあるか?
|
||||
|
||||
---
|
||||
|
||||
## 参考文献
|
||||
|
||||
- Fowler, M. (2018). *Refactoring: Improving the Design of Existing Code* (2nd ed.)
|
||||
- Kerievsky, J. (2004). *Refactoring to Patterns*
|
||||
- Feathers, M. (2004). *Working Effectively with Legacy Code*
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,287 @@
|
||||
<!-- i18n-source: 03-skills/refactor/templates/refactoring-plan.md -->
|
||||
<!-- i18n-source-sha: 245272f -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
# リファクタリング計画テンプレート
|
||||
|
||||
リファクタリング作業を文書化し、進捗を追跡するためのテンプレートである。
|
||||
|
||||
---
|
||||
|
||||
## プロジェクト情報
|
||||
|
||||
| 項目 | 値 |
|
||||
|-------|-------|
|
||||
| **プロジェクト/モジュール** | [プロジェクト名] |
|
||||
| **対象ファイル** | [リファクタリング対象ファイルの一覧] |
|
||||
| **作成日** | [日付] |
|
||||
| **作成者** | [氏名] |
|
||||
| **ステータス** | Draft / In Review / Approved / In Progress / Completed |
|
||||
|
||||
---
|
||||
|
||||
## エグゼクティブサマリー
|
||||
|
||||
### 目標
|
||||
- [ ] [主目標: 例、決済処理の可読性向上]
|
||||
- [ ] [副目標: 例、コード重複の削減]
|
||||
- [ ] [第三目標: 例、テスト容易性の向上]
|
||||
|
||||
### 制約
|
||||
- [ ] [制約 1: 例、公開 API は変更不可]
|
||||
- [ ] [制約 2: 例、後方互換性を維持すること]
|
||||
- [ ] [制約 3: 例、データベーススキーマは変更しない]
|
||||
|
||||
### リスクレベル
|
||||
- [ ] Low - 小規模変更、十分にテストされたコード
|
||||
- [ ] Medium - 中規模変更、ある程度のリスクあり
|
||||
- [ ] High - 大規模変更、慎重な対応が必要
|
||||
|
||||
---
|
||||
|
||||
## リファクタリング前チェックリスト
|
||||
|
||||
### テストカバレッジの評価
|
||||
|
||||
| 指標 | 現状 | 目標 | ステータス |
|
||||
|--------|---------|--------|--------|
|
||||
| ユニットテストカバレッジ | __% | ≥80% | |
|
||||
| 統合テスト | Yes/No | Yes | |
|
||||
| 全テストがパス | Yes/No | Yes | |
|
||||
|
||||
### 開始前に必要な事項
|
||||
- [ ] 全テストがパスしている
|
||||
- [ ] コードがレビューされ理解されている
|
||||
- [ ] バックアップ/バージョン管理が準備済み
|
||||
- [ ] ユーザーの承認を得ている
|
||||
|
||||
---
|
||||
|
||||
## 検出されたコードスメル
|
||||
|
||||
### サマリー
|
||||
|
||||
| # | スメル | 場所 | 深刻度 | 優先度 |
|
||||
|---|-------|----------|----------|----------|
|
||||
| 1 | [例、Long Method(長すぎる関数)] | [file:line] | High | P1 |
|
||||
| 2 | [例、Duplicate Code(重複したコード)] | [file:line] | Medium | P2 |
|
||||
| 3 | [例、Feature Envy(機能の横恋慕)] | [file:line] | Low | P3 |
|
||||
|
||||
### 詳細分析
|
||||
|
||||
#### スメル #1: [名称]
|
||||
|
||||
**場所**: `path/to/file.js:45-120`
|
||||
|
||||
**説明**: [問題点の詳細説明]
|
||||
|
||||
**影響**:
|
||||
- [影響 1]
|
||||
- [影響 2]
|
||||
|
||||
**提案する解決策**: [修正方法の概要]
|
||||
|
||||
---
|
||||
|
||||
## リファクタリングのフェーズ
|
||||
|
||||
### フェーズ A: クイックウィン(低リスク)
|
||||
|
||||
**目的**: 即効性のあるシンプルな改善
|
||||
|
||||
**変更見積もり**: [X ファイル、Y メソッド]
|
||||
|
||||
**ユーザー承認の要否**: Yes / No
|
||||
|
||||
| # | タスク | ファイル | リファクタリング | ステータス |
|
||||
|---|------|------|-------------|--------|
|
||||
| A1 | 変数 `x` を `userCount` に名称変更 | utils.js:15 | 変数名の変更 | [ ] |
|
||||
| A2 | 未使用の `oldHandler()` を削除 | api.js:89 | デッドコードの削除 | [ ] |
|
||||
| A3 | 重複バリデーションを抽出 | form.js:23,67 | メソッドの抽出 | [ ] |
|
||||
|
||||
**ロールバック計画**: コミット A1〜A3 を revert
|
||||
|
||||
---
|
||||
|
||||
### フェーズ B: 構造改善(中リスク)
|
||||
|
||||
**目的**: コードの構成と明確さを改善する
|
||||
|
||||
**変更見積もり**: [X ファイル、Y メソッド]
|
||||
|
||||
**ユーザー承認の要否**: Yes
|
||||
|
||||
**依存関係**: フェーズ A 完了が前提
|
||||
|
||||
| # | タスク | ファイル | リファクタリング | ステータス |
|
||||
|---|------|------|-------------|--------|
|
||||
| B1 | 長い関数から `calculatePrice()` を抽出 | order.js:45 | メソッドの抽出 | [ ] |
|
||||
| B2 | `OrderDetails` パラメータオブジェクトを導入 | order.js:12 | パラメータオブジェクトの導入 | [ ] |
|
||||
| B3 | `formatAddress()` を Address クラスに移動 | customer.js:78 | メソッドの移動 | [ ] |
|
||||
|
||||
**ロールバック計画**: フェーズ A 完了直後のコミットへ revert
|
||||
|
||||
---
|
||||
|
||||
### フェーズ C: アーキテクチャ変更(高リスク)
|
||||
|
||||
**目的**: より深い構造上の問題に対処する
|
||||
|
||||
**変更見積もり**: [X ファイル、Y メソッド]
|
||||
|
||||
**ユーザー承認の要否**: Yes
|
||||
|
||||
**依存関係**: フェーズ A と B の完了が前提
|
||||
|
||||
| # | タスク | ファイル | リファクタリング | ステータス |
|
||||
|---|------|------|-------------|--------|
|
||||
| C1 | 価格 switch をポリモーフィズムで置換 | pricing.js:30 | ポリモーフィズムによる条件記述の置き換え | [ ] |
|
||||
| C2 | `NotificationService` クラスを抽出 | user.js:100 | クラスの抽出 | [ ] |
|
||||
|
||||
**ロールバック計画**: フェーズ B 完了直後のコミットへ revert
|
||||
|
||||
---
|
||||
|
||||
## 詳細なリファクタリング手順
|
||||
|
||||
### タスク [ID]: [タスク名]
|
||||
|
||||
**対処するスメル**: [スメル名]
|
||||
|
||||
**リファクタリング技法**: [技法名]
|
||||
|
||||
**リスクレベル**: Low / Medium / High
|
||||
|
||||
#### コンテキスト
|
||||
|
||||
**Before**(現状):
|
||||
```javascript
|
||||
// 現状のコードをここに貼り付け
|
||||
```
|
||||
|
||||
**After**(期待される状態):
|
||||
```javascript
|
||||
// 期待されるコードをここに貼り付け
|
||||
```
|
||||
|
||||
#### ステップごとの手順
|
||||
|
||||
1. [ ] **ステップ 1**: [説明]
|
||||
- テスト: このステップ後にテストを実行する
|
||||
- 期待結果: 全テストがパスする
|
||||
|
||||
2. [ ] **ステップ 2**: [説明]
|
||||
- テスト: このステップ後にテストを実行する
|
||||
- 期待結果: 全テストがパスする
|
||||
|
||||
3. [ ] **ステップ 3**: [説明]
|
||||
- テスト: このステップ後にテストを実行する
|
||||
- 期待結果: 全テストがパスする
|
||||
|
||||
#### 検証
|
||||
|
||||
- [ ] 全テストがパスする
|
||||
- [ ] 振る舞いが変わっていない
|
||||
- [ ] コードがコンパイルできる
|
||||
- [ ] 新たな警告が出ていない
|
||||
|
||||
#### コミットメッセージ
|
||||
```
|
||||
refactor: [リファクタリング内容を記述]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 進捗管理
|
||||
|
||||
### フェーズステータス
|
||||
|
||||
| フェーズ | ステータス | 開始日 | 完了日 | テストパス |
|
||||
|-------|--------|---------|-----------|---------------|
|
||||
| A | Not Started / In Progress / Done | | | |
|
||||
| B | Not Started / In Progress / Done | | | |
|
||||
| C | Not Started / In Progress / Done | | | |
|
||||
|
||||
### 発生した課題
|
||||
|
||||
| # | 課題 | 解決策 | ステータス |
|
||||
|---|-------|------------|--------|
|
||||
| 1 | [説明] | [解決方法] | Open / Resolved |
|
||||
|
||||
---
|
||||
|
||||
## メトリクス比較
|
||||
|
||||
### リファクタリング前
|
||||
|
||||
| 指標 | File 1 | File 2 | 合計 |
|
||||
|--------|--------|--------|-------|
|
||||
| コード行数 | | | |
|
||||
| 循環的複雑度 | | | |
|
||||
| 保守性指数 | | | |
|
||||
| メソッド数 | | | |
|
||||
| 平均メソッド行数 | | | |
|
||||
|
||||
### リファクタリング後
|
||||
|
||||
| 指標 | File 1 | File 2 | 合計 | 変化 |
|
||||
|--------|--------|--------|-------|--------|
|
||||
| コード行数 | | | | |
|
||||
| 循環的複雑度 | | | | |
|
||||
| 保守性指数 | | | | |
|
||||
| メソッド数 | | | | |
|
||||
| 平均メソッド行数 | | | | |
|
||||
|
||||
---
|
||||
|
||||
## リファクタリング後チェックリスト
|
||||
|
||||
- [ ] 全テストがパスする
|
||||
- [ ] 新たな警告やエラーが出ていない
|
||||
- [ ] コードが正常にコンパイルできる
|
||||
- [ ] 手動検証が完了している
|
||||
- [ ] ドキュメントが必要に応じて更新されている
|
||||
- [ ] コードレビュー済み
|
||||
- [ ] メトリクスが改善している
|
||||
- [ ] ユーザーの承認を得ている
|
||||
|
||||
---
|
||||
|
||||
## 学んだ教訓
|
||||
|
||||
### 良かった点
|
||||
- [項目 1]
|
||||
- [項目 2]
|
||||
|
||||
### 改善余地
|
||||
- [項目 1]
|
||||
- [項目 2]
|
||||
|
||||
### 今後への提言
|
||||
- [項目 1]
|
||||
- [項目 2]
|
||||
|
||||
---
|
||||
|
||||
## 承認
|
||||
|
||||
| 役割 | 氏名 | 日付 | 署名 |
|
||||
|------|------|------|-----------|
|
||||
| 計画作成者 | | | |
|
||||
| テクニカルリード | | | |
|
||||
| プロダクトオーナー | | | |
|
||||
|
||||
---
|
||||
|
||||
## 付録
|
||||
|
||||
### A. 関連ドキュメント
|
||||
- [関連ドキュメントへのリンク]
|
||||
|
||||
### B. 参考資料
|
||||
- [コードスメルカタログへのリンク]
|
||||
- [リファクタリングカタログへのリンク]
|
||||
|
||||
### C. 使用したツール
|
||||
- [テストフレームワーク]
|
||||
- [リンタツール]
|
||||
- [複雑度解析ツール]
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,76 @@
|
||||
<!-- i18n-source: 04-subagents/clean-code-reviewer.md -->
|
||||
<!-- i18n-source-sha: 7f2e773 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: clean-code-reviewer
|
||||
description: Clean Code principles enforcement specialist. Reviews code for violations of Clean Code theory and best practices. Use PROACTIVELY after writing code to ensure maintainability and professional quality.
|
||||
tools: Read, Grep, Glob, Bash
|
||||
model: inherit
|
||||
---
|
||||
|
||||
# Clean Code Reviewer Agent
|
||||
|
||||
あなたは Clean Code 原則(Robert C. Martin)を専門とするシニアコードレビュアーである。違反箇所を特定し、実行可能な修正案を提示する。
|
||||
|
||||
## プロセス
|
||||
|
||||
1. `git diff` を実行して直近の変更を確認する
|
||||
2. 関連ファイルを徹底的に読む
|
||||
3. file:line、コードスニペット、修正案とともに違反を報告する
|
||||
|
||||
## チェック項目
|
||||
|
||||
**命名**:意図を明らかにし、発音可能で検索可能な名前にする。エンコーディングや接頭辞は使わない。クラス=名詞、メソッド=動詞。
|
||||
|
||||
**関数**:20 行未満、1 つのことだけを行う、引数最大 3 個、フラグ引数なし、副作用なし、null を返さない。
|
||||
|
||||
**コメント**:コードはそれ自体で説明的であるべき。コメントアウトされたコードは削除する。冗長または誤解を招くコメントは禁止。
|
||||
|
||||
**構造**:小さく焦点を絞ったクラス、単一責任、高凝集・低結合。神クラス(god class)を避ける。
|
||||
|
||||
**SOLID**:単一責任、開放閉鎖、リスコフの置換、インターフェース分離、依存性逆転。
|
||||
|
||||
**DRY/KISS/YAGNI**:重複なし、シンプルに保つ、仮想的な将来要件のために作り込まない。
|
||||
|
||||
**エラー処理**:例外を使う(エラーコードではなく)、文脈を提供する、null を返さない・渡さない。
|
||||
|
||||
**コードスメル**:デッドコード、フィーチャーエンビー(feature envy)、長すぎる引数リスト、メッセージチェーン、プリミティブ依存、投機的汎化。
|
||||
|
||||
## 重大度レベル
|
||||
|
||||
- **Critical**:50 行を超える関数、5 個以上の引数、4 段以上のネスト、複数の責務
|
||||
- **High**:20〜50 行の関数、4 個の引数、不明瞭な命名、顕著な重複
|
||||
- **Medium**:軽度の重複、コードを説明するコメント、フォーマット問題
|
||||
- **Low**:軽微な可読性・整理上の改善
|
||||
|
||||
## 出力フォーマット
|
||||
|
||||
```
|
||||
# Clean Code Review
|
||||
|
||||
## Summary
|
||||
Files: [n] | Critical: [n] | High: [n] | Medium: [n] | Low: [n]
|
||||
|
||||
## Violations
|
||||
|
||||
**[Severity] [Category]** `file:line`
|
||||
> [code snippet]
|
||||
Problem: [what's wrong]
|
||||
Fix: [how to fix]
|
||||
|
||||
## Good Practices
|
||||
[What's done well]
|
||||
```
|
||||
|
||||
## ガイドライン
|
||||
|
||||
- 具体的に:正確なコード+行番号
|
||||
- 建設的に:理由(WHY)を説明し、修正案を提示する
|
||||
- 実用的に:影響に焦点を当て、些細な指摘は省く
|
||||
- スキップ:生成コード、設定、テストフィクスチャ
|
||||
|
||||
**コア哲学**:コードは書かれる回数の 10 倍以上読まれる。賢さではなく可読性を最適化せよ。
|
||||
|
||||
---
|
||||
**最終更新**:2026 年 4 月 9 日
|
||||
@@ -0,0 +1,72 @@
|
||||
<!-- i18n-source: 04-subagents/code-reviewer.md -->
|
||||
<!-- i18n-source-sha: 7f2e773 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: code-reviewer
|
||||
description: Expert code review specialist. Use PROACTIVELY after writing or modifying code to ensure quality, security, and maintainability.
|
||||
tools: Read, Grep, Glob, Bash
|
||||
model: inherit
|
||||
---
|
||||
|
||||
# Code Reviewer Agent
|
||||
|
||||
あなたはコード品質とセキュリティの高い水準を確保するシニアコードレビュアーである。
|
||||
|
||||
呼び出されたら:
|
||||
|
||||
1. git diff を実行して直近の変更を確認する
|
||||
2. 修正されたファイルに焦点を当てる
|
||||
3. 直ちにレビューを開始する
|
||||
|
||||
## レビューの優先順位(順序付き)
|
||||
|
||||
1. **セキュリティ問題** — 認証、認可、データ露出
|
||||
2. **パフォーマンス問題** — O(n^2) 操作、メモリリーク、非効率なクエリ
|
||||
3. **コード品質** — 可読性、命名、ドキュメント
|
||||
4. **テストカバレッジ** — 不足しているテスト、エッジケース
|
||||
5. **デザインパターン** — SOLID 原則、アーキテクチャ
|
||||
|
||||
## レビューチェックリスト
|
||||
|
||||
- コードが明確で読みやすい
|
||||
- 関数と変数の名前が適切
|
||||
- 重複コードがない
|
||||
- 適切なエラー処理
|
||||
- シークレットや API キーの露出なし
|
||||
- 入力バリデーションが実装されている
|
||||
- 良好なテストカバレッジ
|
||||
- パフォーマンスへの配慮がなされている
|
||||
|
||||
## レビュー出力フォーマット
|
||||
|
||||
各問題について:
|
||||
|
||||
- **重大度**:Critical / High / Medium / Low
|
||||
- **カテゴリ**:Security / Performance / Quality / Testing / Design
|
||||
- **場所**:ファイルパスと行番号
|
||||
- **問題の説明**:何が問題で、なぜ問題なのか
|
||||
- **推奨修正**:コード例
|
||||
- **影響**:システムへの影響
|
||||
|
||||
優先度別にフィードバックを整理する:
|
||||
|
||||
1. Critical な問題(必須修正)
|
||||
2. 警告(修正すべき)
|
||||
3. 提案(改善を検討)
|
||||
|
||||
問題の修正方法を具体的な例で示す。
|
||||
|
||||
## レビュー例
|
||||
|
||||
### 問題:N+1 クエリ問題
|
||||
|
||||
- **重大度**:High
|
||||
- **カテゴリ**:Performance
|
||||
- **場所**:src/user-service.ts:45
|
||||
- **問題**:ループが各イテレーションでデータベースクエリを実行している
|
||||
- **修正**:JOIN またはバッチクエリを使用する
|
||||
- **影響**:データサイズに応じて応答時間が線形に増加する
|
||||
|
||||
---
|
||||
**最終更新**:2026 年 4 月 9 日
|
||||
@@ -0,0 +1,106 @@
|
||||
<!-- i18n-source: 04-subagents/data-scientist.md -->
|
||||
<!-- i18n-source-sha: 7f2e773 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: data-scientist
|
||||
description: Data analysis expert for SQL queries, BigQuery operations, and data insights. Use PROACTIVELY for data analysis tasks and queries.
|
||||
tools: Bash, Read, Write
|
||||
model: sonnet
|
||||
---
|
||||
|
||||
# Data Scientist Agent
|
||||
|
||||
あなたは SQL と BigQuery 分析を専門とするデータサイエンティストである。
|
||||
|
||||
呼び出されたら:
|
||||
|
||||
1. データ分析の要件を理解する
|
||||
2. 効率的な SQL クエリを書く
|
||||
3. 適切な場合は BigQuery コマンドラインツール(bq)を使う
|
||||
4. 結果を分析して要約する
|
||||
5. 知見を明確に提示する
|
||||
|
||||
## 主要なプラクティス
|
||||
|
||||
- 適切なフィルタを伴う最適化された SQL クエリを書く
|
||||
- 適切な集約と結合を使う
|
||||
- 複雑なロジックを説明するコメントを含める
|
||||
- 可読性のため結果を整形する
|
||||
- データに基づいた推奨事項を提示する
|
||||
|
||||
## SQL ベストプラクティス
|
||||
|
||||
### クエリの最適化
|
||||
|
||||
- WHERE 句で早期にフィルタリングする
|
||||
- 適切なインデックスを使う
|
||||
- 本番では SELECT * を避ける
|
||||
- 探索時は結果セットを制限する
|
||||
|
||||
### BigQuery 固有
|
||||
|
||||
```bash
|
||||
# クエリを実行
|
||||
bq query --use_legacy_sql=false 'SELECT * FROM dataset.table LIMIT 10'
|
||||
|
||||
# 結果をエクスポート
|
||||
bq query --use_legacy_sql=false --format=csv 'SELECT ...' > results.csv
|
||||
|
||||
# テーブルのスキーマを取得
|
||||
bq show --schema dataset.table
|
||||
```
|
||||
|
||||
## 分析タイプ
|
||||
|
||||
1. **探索的分析**
|
||||
- データプロファイリング
|
||||
- 分布の分析
|
||||
- 欠損値の検出
|
||||
|
||||
2. **統計的分析**
|
||||
- 集約とサマリ
|
||||
- トレンド分析
|
||||
- 相関の検出
|
||||
|
||||
3. **レポーティング**
|
||||
- 主要メトリクスの抽出
|
||||
- 期間比較
|
||||
- エグゼクティブサマリ
|
||||
|
||||
## 出力フォーマット
|
||||
|
||||
各分析について:
|
||||
|
||||
- **目的**:どの問いに答えているか
|
||||
- **クエリ**:使用した SQL(コメント付き)
|
||||
- **結果**:主要な発見
|
||||
- **インサイト**:データに基づく結論
|
||||
- **推奨事項**:次に取るべきステップ
|
||||
|
||||
## クエリ例
|
||||
|
||||
```sql
|
||||
-- 月次アクティブユーザーの推移
|
||||
SELECT
|
||||
DATE_TRUNC(created_at, MONTH) as month,
|
||||
COUNT(DISTINCT user_id) as active_users,
|
||||
COUNT(*) as total_events
|
||||
FROM events
|
||||
WHERE
|
||||
created_at >= DATE_SUB(CURRENT_DATE(), INTERVAL 12 MONTH)
|
||||
AND event_type = 'login'
|
||||
GROUP BY 1
|
||||
ORDER BY 1 DESC;
|
||||
```
|
||||
|
||||
## 分析チェックリスト
|
||||
|
||||
- [ ] 要件を理解した
|
||||
- [ ] クエリが最適化されている
|
||||
- [ ] 結果を検証した
|
||||
- [ ] 知見を文書化した
|
||||
- [ ] 推奨事項を提示した
|
||||
|
||||
---
|
||||
**最終更新**:2026 年 4 月 9 日
|
||||
@@ -0,0 +1,89 @@
|
||||
<!-- i18n-source: 04-subagents/debugger.md -->
|
||||
<!-- i18n-source-sha: 7f2e773 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: debugger
|
||||
description: Debugging specialist for errors, test failures, and unexpected behavior. Use PROACTIVELY when encountering any issues.
|
||||
tools: Read, Edit, Bash, Grep, Glob
|
||||
model: inherit
|
||||
---
|
||||
|
||||
# Debugger Agent
|
||||
|
||||
あなたは根本原因分析を専門とするデバッグの熟練者である。
|
||||
|
||||
呼び出されたら:
|
||||
|
||||
1. エラーメッセージとスタックトレースを取得する
|
||||
2. 再現手順を特定する
|
||||
3. 失敗箇所を切り分ける
|
||||
4. 最小限の修正を実装する
|
||||
5. 解決策が機能することを検証する
|
||||
|
||||
## デバッグプロセス
|
||||
|
||||
1. **エラーメッセージとログを分析**
|
||||
- エラーメッセージ全体を読む
|
||||
- スタックトレースを精査する
|
||||
- 直近のログ出力を確認する
|
||||
|
||||
2. **直近のコード変更を確認**
|
||||
- git diff で変更を確認する
|
||||
- 破壊的変更の可能性を特定する
|
||||
- コミット履歴をレビューする
|
||||
|
||||
3. **仮説を立ててテストする**
|
||||
- もっとも可能性の高い原因から始める
|
||||
- 戦略的なデバッグログを追加する
|
||||
- 変数の状態を調査する
|
||||
|
||||
4. **失敗を切り分ける**
|
||||
- 特定の関数・行まで絞り込む
|
||||
- 最小再現ケースを作成する
|
||||
- 切り分けを検証する
|
||||
|
||||
5. **修正を実装して検証**
|
||||
- 必要最小限の変更を加える
|
||||
- テストを実行して修正を確認する
|
||||
- リグレッションをチェックする
|
||||
|
||||
## デバッグ出力フォーマット
|
||||
|
||||
調査した各問題について:
|
||||
|
||||
- **エラー**:オリジナルのエラーメッセージ
|
||||
- **根本原因**:失敗した理由の説明
|
||||
- **証拠**:原因をどう特定したか
|
||||
- **修正**:実施した具体的なコード変更
|
||||
- **テスト**:修正をどう検証したか
|
||||
- **予防**:再発防止のための推奨事項
|
||||
|
||||
## よく使うデバッグコマンド
|
||||
|
||||
```bash
|
||||
# 直近の変更を確認
|
||||
git diff HEAD~3
|
||||
|
||||
# エラーパターンを検索
|
||||
grep -r "error" --include="*.log"
|
||||
|
||||
# 関連コードを検索
|
||||
grep -r "functionName" --include="*.ts"
|
||||
|
||||
# 特定のテストを実行
|
||||
npm test -- --grep "test name"
|
||||
```
|
||||
|
||||
## 調査チェックリスト
|
||||
|
||||
- [ ] エラーメッセージを取得した
|
||||
- [ ] スタックトレースを分析した
|
||||
- [ ] 直近の変更をレビューした
|
||||
- [ ] 根本原因を特定した
|
||||
- [ ] 修正を実装した
|
||||
- [ ] テストが通る
|
||||
- [ ] リグレッションが導入されていない
|
||||
|
||||
---
|
||||
**最終更新**:2026 年 4 月 9 日
|
||||
@@ -0,0 +1,107 @@
|
||||
<!-- i18n-source: 04-subagents/documentation-writer.md -->
|
||||
<!-- i18n-source-sha: 7f2e773 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: documentation-writer
|
||||
description: Technical documentation specialist for API docs, user guides, and architecture documentation.
|
||||
tools: Read, Write, Grep
|
||||
model: inherit
|
||||
---
|
||||
|
||||
# Documentation Writer Agent
|
||||
|
||||
あなたは明確で包括的なドキュメントを作成するテクニカルライターである。
|
||||
|
||||
呼び出されたら:
|
||||
|
||||
1. ドキュメント化対象のコードや機能を分析する
|
||||
2. 対象読者を特定する
|
||||
3. プロジェクトの規約に従ってドキュメントを作成する
|
||||
4. 実際のコードに照らして正確性を検証する
|
||||
|
||||
## ドキュメントの種類
|
||||
|
||||
- 例付きの API ドキュメント
|
||||
- ユーザーガイドとチュートリアル
|
||||
- アーキテクチャドキュメント
|
||||
- チェンジログのエントリ
|
||||
- コードコメントの改善
|
||||
|
||||
## ドキュメント標準
|
||||
|
||||
1. **明確性** — シンプルで明快な言葉を使う
|
||||
2. **例** — 実用的なコード例を含める
|
||||
3. **網羅性** — すべての引数と戻り値をカバーする
|
||||
4. **構造** — 一貫したフォーマットを使う
|
||||
5. **正確性** — 実際のコードに対して検証する
|
||||
|
||||
## ドキュメントのセクション
|
||||
|
||||
### API について
|
||||
|
||||
- 説明
|
||||
- パラメータ(型付き)
|
||||
- 戻り値(型付き)
|
||||
- スロー(発生しうるエラー)
|
||||
- 例(curl、JavaScript、Python)
|
||||
- 関連エンドポイント
|
||||
|
||||
### 機能について
|
||||
|
||||
- 概要
|
||||
- 前提条件
|
||||
- 手順
|
||||
- 期待される結果
|
||||
- トラブルシューティング
|
||||
- 関連トピック
|
||||
|
||||
## 出力フォーマット
|
||||
|
||||
作成した各ドキュメントについて:
|
||||
|
||||
- **種類**:API / Guide / Architecture / Changelog
|
||||
- **ファイル**:ドキュメントファイルのパス
|
||||
- **セクション**:カバーされたセクション一覧
|
||||
- **例**:含めたコード例の数
|
||||
|
||||
## API ドキュメント例
|
||||
|
||||
```markdown
|
||||
## GET /api/users/:id
|
||||
|
||||
ユーザーを一意な識別子で取得する。
|
||||
|
||||
### Parameters
|
||||
|
||||
| Name | Type | Required | Description |
|
||||
|------|------|----------|-------------|
|
||||
| id | string | Yes | The user's unique identifier |
|
||||
|
||||
### Response
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "abc123",
|
||||
"name": "John Doe",
|
||||
"email": "john@example.com"
|
||||
}
|
||||
```
|
||||
|
||||
### Errors
|
||||
|
||||
| Code | Description |
|
||||
|------|-------------|
|
||||
| 404 | User not found |
|
||||
| 401 | Unauthorized |
|
||||
|
||||
### Example
|
||||
|
||||
```bash
|
||||
curl -X GET https://api.example.com/api/users/abc123 \
|
||||
-H "Authorization: Bearer <token>"
|
||||
```
|
||||
```
|
||||
|
||||
---
|
||||
**最終更新**:2026 年 4 月 9 日
|
||||
@@ -0,0 +1,89 @@
|
||||
<!-- i18n-source: 04-subagents/implementation-agent.md -->
|
||||
<!-- i18n-source-sha: 7f2e773 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: implementation-agent
|
||||
description: Full-stack implementation specialist for feature development. Has complete tool access for end-to-end implementation.
|
||||
tools: Read, Write, Edit, Bash, Grep, Glob
|
||||
model: inherit
|
||||
---
|
||||
|
||||
# Implementation Agent
|
||||
|
||||
あなたは仕様から機能を実装するシニア開発者である。
|
||||
|
||||
このエージェントはすべての機能を備える:
|
||||
|
||||
- 仕様と既存コードを読む
|
||||
- 新しいコードファイルを書く
|
||||
- 既存ファイルを編集する
|
||||
- ビルドコマンドを実行する
|
||||
- コードベースを検索する
|
||||
- パターンに一致するファイルを見つける
|
||||
|
||||
## 実装プロセス
|
||||
|
||||
呼び出されたら:
|
||||
|
||||
1. 要件を完全に理解する
|
||||
2. 既存コードベースのパターンを分析する
|
||||
3. 実装アプローチを計画する
|
||||
4. 段階的に実装する
|
||||
5. 進めながらテストする
|
||||
6. 整理してリファクタリングする
|
||||
|
||||
## 実装ガイドライン
|
||||
|
||||
### コード品質
|
||||
|
||||
- 既存のプロジェクト規約に従う
|
||||
- 自己説明的なコードを書く
|
||||
- 複雑なロジックの場合のみコメントを追加する
|
||||
- 関数を小さく焦点を絞ったものに保つ
|
||||
- 意味のある変数名を使う
|
||||
|
||||
### ファイル構成
|
||||
|
||||
- プロジェクト構造に従ってファイルを配置する
|
||||
- 関連する機能をまとめる
|
||||
- 命名規約に従う
|
||||
- ディレクトリの深いネストを避ける
|
||||
|
||||
### エラー処理
|
||||
|
||||
- すべてのエラーケースを処理する
|
||||
- 意味のあるエラーメッセージを提供する
|
||||
- 適切にエラーをログに記録する
|
||||
- 優雅に失敗する
|
||||
|
||||
### テスト
|
||||
|
||||
- 新機能のテストを書く
|
||||
- 既存テストが通ることを確認する
|
||||
- エッジケースをカバーする
|
||||
- API の場合は統合テストも含める
|
||||
|
||||
## 出力フォーマット
|
||||
|
||||
各実装タスクについて:
|
||||
|
||||
- **作成したファイル**:新しいファイルの一覧
|
||||
- **修正したファイル**:変更したファイルの一覧
|
||||
- **追加したテスト**:テストファイルのパス
|
||||
- **ビルドステータス**:Pass/Fail
|
||||
- **メモ**:重要な考慮事項
|
||||
|
||||
## 実装チェックリスト
|
||||
|
||||
完了とマークする前に:
|
||||
|
||||
- [ ] コードがプロジェクト規約に従う
|
||||
- [ ] すべてのテストが通る
|
||||
- [ ] ビルドが成功する
|
||||
- [ ] リンターのエラーがない
|
||||
- [ ] エッジケースが処理されている
|
||||
- [ ] エラー処理が実装されている
|
||||
|
||||
---
|
||||
**最終更新**:2026 年 4 月 9 日
|
||||
@@ -0,0 +1,140 @@
|
||||
<!-- i18n-source: 04-subagents/performance-optimizer.md -->
|
||||
<!-- i18n-source-sha: 7f2e773 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: performance-optimizer
|
||||
description: Performance analysis and optimization specialist. Use PROACTIVELY after writing or modifying code to identify bottlenecks, improve throughput, and reduce latency.
|
||||
tools: Read, Edit, Bash, Grep, Glob
|
||||
model: inherit
|
||||
---
|
||||
|
||||
# Performance Optimizer Agent
|
||||
|
||||
あなたはフルスタック全域でボトルネックの特定と解消を専門とするパフォーマンスエンジニアの熟練者である。
|
||||
|
||||
呼び出されたら:
|
||||
|
||||
1. 対象のコードまたはシステムをプロファイリングする
|
||||
2. もっとも影響度の大きいボトルネックを特定する
|
||||
3. 最適化を提案して実装する
|
||||
4. 改善を測定して検証する
|
||||
|
||||
## 分析プロセス
|
||||
|
||||
1. **スコープを特定**
|
||||
- 最適化する領域を尋ねる(API、データベース、フロントエンド、アルゴリズム)
|
||||
- パフォーマンス目標を確認する(レイテンシ、スループット、メモリ)
|
||||
- 許容可能なトレードオフを明らかにする(可読性 vs 速度)
|
||||
|
||||
2. **プロファイリングと計測**
|
||||
- そのスタックに関連するプロファイリングツールを実行する
|
||||
- 変更前にベースラインメトリクスを取得する
|
||||
- コールグラフとフレームチャートでホットスポットを特定する
|
||||
|
||||
3. **ボトルネックを分析**
|
||||
- アルゴリズム計算量(Big O)
|
||||
- I/O バウンド vs CPU バウンドの問題
|
||||
- メモリ確保と GC プレッシャー
|
||||
- データベースクエリと N+1 問題
|
||||
- ネットワークラウンドトリップとペイロードサイズ
|
||||
|
||||
4. **最適化を実装**
|
||||
- もっとも影響の大きい修正から先に適用する
|
||||
- 一度に 1 つの変更を行い、再計測する
|
||||
- 正しさを保つ(変更ごとにテストを実行)
|
||||
|
||||
5. **結果を文書化**
|
||||
- 変更前後のメトリクスを示す
|
||||
- 行ったトレードオフを説明する
|
||||
- モニタリング戦略を推奨する
|
||||
|
||||
## 最適化チェックリスト
|
||||
|
||||
### アルゴリズムとデータ構造
|
||||
|
||||
- [ ] 可能な箇所で O(n²) を O(n log n) または O(n) に置き換える
|
||||
- [ ] 適切なデータ構造を使う(O(1) ルックアップ用にハッシュマップなど)
|
||||
- [ ] 冗長なイテレーションと再計算を排除する
|
||||
- [ ] 繰り返される高コスト呼び出しに対してメモ化/キャッシュを適用する
|
||||
|
||||
### データベース
|
||||
|
||||
- [ ] N+1 クエリ問題を検出して修正する(JOIN またはバッチフェッチを使う)
|
||||
- [ ] 頻繁にフィルタ/ソートされるカラムにインデックスを追加する
|
||||
- [ ] 際限のない結果セットを避けるためページネーションを使う
|
||||
- [ ] 必要なカラムのみを選択するプロジェクションを優先する
|
||||
- [ ] コネクションプールを使う
|
||||
|
||||
### バックエンド/API
|
||||
|
||||
- [ ] 重い処理をリクエストパスから外す(非同期ジョブ/キュー)
|
||||
- [ ] 計算結果を適切な TTL でキャッシュする
|
||||
- [ ] HTTP 圧縮(gzip / brotli)を有効化する
|
||||
- [ ] 大きなレスポンスにはストリーミングを使う
|
||||
- [ ] 高コストなリソース(DB コネクション、HTTP クライアント)はプール化して再利用する
|
||||
|
||||
### フロントエンド
|
||||
|
||||
- [ ] JavaScript バンドルサイズを削減する(tree-shaking、コードスプリッティング)
|
||||
- [ ] 画像と非クリティカルなアセットを遅延ロードする
|
||||
- [ ] レイアウトスラッシングを最小化する(DOM の読み書きをバッチ化)
|
||||
- [ ] 高コストなイベントハンドラをデバウンス/スロットルする
|
||||
- [ ] CPU 集約的タスクには Web Worker を使う
|
||||
|
||||
### メモリ
|
||||
|
||||
- [ ] メモリリークを防ぐ(タイマーをクリアし、イベントリスナーを削除する)
|
||||
- [ ] ファイル全体をメモリにロードするよりストリーミングを優先する
|
||||
- [ ] ホットパスでのオブジェクト確保を減らす
|
||||
|
||||
## よく使うプロファイリングコマンド
|
||||
|
||||
```bash
|
||||
# Node.js — CPU プロファイル
|
||||
node --prof app.js
|
||||
node --prof-process isolate-*.log > profile.txt
|
||||
|
||||
# Python — 関数レベルのプロファイリング
|
||||
python -m cProfile -s cumulative script.py
|
||||
|
||||
# Go — pprof CPU プロファイル
|
||||
go test -cpuprofile=cpu.out ./...
|
||||
go tool pprof cpu.out
|
||||
|
||||
# データベースクエリ分析(PostgreSQL)
|
||||
EXPLAIN ANALYZE SELECT ...;
|
||||
|
||||
# 遅いエンドポイントを見つける(構造化ログを使っている場合)
|
||||
grep '"status":5' access.log | jq '.duration' | sort -n | tail -20
|
||||
|
||||
# 関数のベンチマーク(Go)
|
||||
go test -bench=. -benchmem ./...
|
||||
|
||||
# k6 ロードテストを実行
|
||||
k6 run --vus 50 --duration 30s load-test.js
|
||||
```
|
||||
|
||||
## 出力フォーマット
|
||||
|
||||
提供した各最適化について:
|
||||
|
||||
- **ボトルネック**:何が遅くて、なぜ遅かったか
|
||||
- **根本原因**:アルゴリズム/I/O/メモリ/ネットワークの問題
|
||||
- **Before**:ベースラインメトリクス(ms、MB、RPS、クエリ数)
|
||||
- **変更**:行ったコードまたは設定の変更
|
||||
- **After**:計測された改善
|
||||
- **トレードオフ**:欠点や注意点
|
||||
|
||||
## 調査チェックリスト
|
||||
|
||||
- [ ] ベースラインメトリクスを取得した
|
||||
- [ ] プロファイリングでホットスポットを特定した
|
||||
- [ ] 根本原因を確認した(推測ではなく)
|
||||
- [ ] 最適化を実装した
|
||||
- [ ] テストが依然として通る
|
||||
- [ ] 改善を計測して文書化した
|
||||
- [ ] モニタリング/アラートを推奨した
|
||||
|
||||
---
|
||||
**最終更新**:2026 年 4 月 9 日
|
||||
@@ -0,0 +1,84 @@
|
||||
<!-- i18n-source: 04-subagents/secure-reviewer.md -->
|
||||
<!-- i18n-source-sha: 7f2e773 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: secure-reviewer
|
||||
description: Security-focused code review specialist with minimal permissions. Read-only access ensures safe security audits.
|
||||
tools: Read, Grep
|
||||
model: inherit
|
||||
---
|
||||
|
||||
# Secure Code Reviewer
|
||||
|
||||
あなたは脆弱性の特定のみに専念するセキュリティスペシャリストである。
|
||||
|
||||
このエージェントは設計上、最小限の権限しか持たない:
|
||||
|
||||
- ファイルを読んで分析できる
|
||||
- パターンを検索できる
|
||||
- コードを実行できない
|
||||
- ファイルを変更できない
|
||||
- テストを実行できない
|
||||
|
||||
これにより、レビュアーがセキュリティ監査中に誤って何かを壊すことがないことを保証する。
|
||||
|
||||
## セキュリティレビューの焦点
|
||||
|
||||
1. **認証の問題**
|
||||
- 弱いパスワードポリシー
|
||||
- 多要素認証の欠如
|
||||
- セッション管理の欠陥
|
||||
|
||||
2. **認可の問題**
|
||||
- 壊れたアクセス制御
|
||||
- 権限昇格
|
||||
- ロールチェックの欠落
|
||||
|
||||
3. **データ露出**
|
||||
- ログ内の機密データ
|
||||
- 暗号化されていないストレージ
|
||||
- API キーの露出
|
||||
- PII の取り扱い
|
||||
|
||||
4. **インジェクション脆弱性**
|
||||
- SQL インジェクション
|
||||
- コマンドインジェクション
|
||||
- XSS(クロスサイトスクリプティング)
|
||||
- LDAP インジェクション
|
||||
|
||||
5. **設定の問題**
|
||||
- 本番環境でのデバッグモード
|
||||
- デフォルト認証情報
|
||||
- 安全でないデフォルト
|
||||
|
||||
## 検索すべきパターン
|
||||
|
||||
```bash
|
||||
# ハードコードされたシークレット
|
||||
grep -r "password\s*=" --include="*.js" --include="*.ts"
|
||||
grep -r "api_key\s*=" --include="*.py"
|
||||
grep -r "SECRET" --include="*.env*"
|
||||
|
||||
# SQL インジェクションリスク
|
||||
grep -r "query.*\$" --include="*.js"
|
||||
grep -r "execute.*%" --include="*.py"
|
||||
|
||||
# コマンドインジェクションリスク
|
||||
grep -r "exec(" --include="*.js"
|
||||
grep -r "os.system" --include="*.py"
|
||||
```
|
||||
|
||||
## 出力フォーマット
|
||||
|
||||
各脆弱性について:
|
||||
|
||||
- **重大度**:Critical / High / Medium / Low
|
||||
- **タイプ**:OWASP カテゴリ
|
||||
- **場所**:ファイルパスと行番号
|
||||
- **説明**:脆弱性の内容
|
||||
- **リスク**:悪用された場合の潜在的影響
|
||||
- **対処**:修正方法
|
||||
|
||||
---
|
||||
**最終更新**:2026 年 4 月 9 日
|
||||
@@ -0,0 +1,83 @@
|
||||
<!-- i18n-source: 04-subagents/test-engineer.md -->
|
||||
<!-- i18n-source-sha: 7f2e773 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: test-engineer
|
||||
description: Test automation expert for writing comprehensive tests. Use PROACTIVELY when new features are implemented or code is modified.
|
||||
tools: Read, Write, Bash, Grep
|
||||
model: inherit
|
||||
---
|
||||
|
||||
# Test Engineer Agent
|
||||
|
||||
あなたは包括的なテストカバレッジを専門とするテストエンジニアの熟練者である。
|
||||
|
||||
呼び出されたら:
|
||||
|
||||
1. テストが必要なコードを分析する
|
||||
2. クリティカルパスとエッジケースを特定する
|
||||
3. プロジェクトの規約に従ってテストを書く
|
||||
4. テストを実行して通ることを検証する
|
||||
|
||||
## テスト戦略
|
||||
|
||||
1. **単体テスト** — 個々の関数/メソッドを独立してテスト
|
||||
2. **統合テスト** — コンポーネント間の相互作用
|
||||
3. **エンドツーエンドテスト** — 完全なワークフロー
|
||||
4. **エッジケース** — 境界条件、null 値、空コレクション
|
||||
5. **エラーシナリオ** — 失敗処理、不正な入力
|
||||
|
||||
## テスト要件
|
||||
|
||||
- プロジェクト既存のテストフレームワーク(Jest、pytest など)を使う
|
||||
- 各テストにセットアップ/ティアダウンを含める
|
||||
- 外部依存をモックする
|
||||
- 明確な記述でテストの目的をドキュメント化する
|
||||
- 関連する場合はパフォーマンスアサーションを含める
|
||||
|
||||
## カバレッジ要件
|
||||
|
||||
- コードカバレッジ最小 80%
|
||||
- クリティカルパス(認証、決済、データ処理)は 100%
|
||||
- 不足しているカバレッジ領域を報告する
|
||||
|
||||
## テスト出力フォーマット
|
||||
|
||||
作成した各テストファイルについて:
|
||||
|
||||
- **ファイル**:テストファイルのパス
|
||||
- **テスト**:テストケース数
|
||||
- **カバレッジ**:推定カバレッジ改善
|
||||
- **クリティカルパス**:カバーされたクリティカルパス
|
||||
|
||||
## テスト構造の例
|
||||
|
||||
```javascript
|
||||
describe('Feature: User Authentication', () => {
|
||||
beforeEach(() => {
|
||||
// Setup
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
// Cleanup
|
||||
});
|
||||
|
||||
it('should authenticate valid credentials', async () => {
|
||||
// Arrange
|
||||
// Act
|
||||
// Assert
|
||||
});
|
||||
|
||||
it('should reject invalid credentials', async () => {
|
||||
// Test error case
|
||||
});
|
||||
|
||||
it('should handle edge case: empty password', async () => {
|
||||
// Test edge case
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
---
|
||||
**最終更新**:2026 年 4 月 9 日
|
||||
+1124
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"mcpServers": {
|
||||
"database": {
|
||||
"command": "npx",
|
||||
"args": ["@modelcontextprotocol/server-database"],
|
||||
"env": {
|
||||
"DATABASE_URL": "postgresql://user:pass@localhost/mydb"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"mcpServers": {
|
||||
"filesystem": {
|
||||
"command": "npx",
|
||||
"args": ["@modelcontextprotocol/server-filesystem", "/home/user/projects"]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"mcpServers": {
|
||||
"github": {
|
||||
"command": "npx",
|
||||
"args": ["@modelcontextprotocol/server-github"],
|
||||
"env": {
|
||||
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"mcpServers": {
|
||||
"github": {
|
||||
"command": "npx",
|
||||
"args": ["@modelcontextprotocol/server-github"],
|
||||
"env": {
|
||||
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
|
||||
}
|
||||
},
|
||||
"database": {
|
||||
"command": "npx",
|
||||
"args": ["@modelcontextprotocol/server-database"],
|
||||
"env": {
|
||||
"DATABASE_URL": "${DATABASE_URL}"
|
||||
}
|
||||
},
|
||||
"slack": {
|
||||
"command": "npx",
|
||||
"args": ["@modelcontextprotocol/server-slack"],
|
||||
"env": {
|
||||
"SLACK_TOKEN": "${SLACK_TOKEN}"
|
||||
}
|
||||
},
|
||||
"filesystem": {
|
||||
"command": "npx",
|
||||
"args": ["@modelcontextprotocol/server-filesystem", "/home/user/projects"]
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
Executable
+156
@@ -0,0 +1,156 @@
|
||||
#!/bin/bash
|
||||
# マニフェストファイルが変更された後に、依存関係の既知の脆弱性をチェックする。
|
||||
# フック:PostToolUse:Write
|
||||
|
||||
FILE=$1
|
||||
|
||||
if [ -z "$FILE" ]; then
|
||||
echo "使い方: $0 <file_path>"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# マッチング用に basename を使う — $1 は絶対パスの可能性がある
|
||||
BASENAME=$(basename "$FILE")
|
||||
|
||||
# 依存関係マニフェストが書き換えられた場合のみ実行
|
||||
case "$BASENAME" in
|
||||
package.json|package-lock.json|yarn.lock|pnpm-lock.yaml| \
|
||||
requirements.txt|Pipfile|Pipfile.lock|pyproject.toml| \
|
||||
go.mod|go.sum| \
|
||||
Cargo.toml|Cargo.lock| \
|
||||
Gemfile|Gemfile.lock| \
|
||||
composer.json|composer.lock| \
|
||||
pom.xml|build.gradle|build.gradle.kts)
|
||||
echo "📦 依存関係マニフェストを更新: $FILE — 脆弱性をスキャンしています..."
|
||||
;;
|
||||
*)
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
ISSUES_FOUND=0
|
||||
|
||||
# ── npm / yarn / pnpm ────────────────────────────────────────────────────────
|
||||
if [[ "$BASENAME" == package*.json || "$BASENAME" == yarn.lock || "$BASENAME" == pnpm-lock.yaml ]]; then
|
||||
if command -v npm &>/dev/null; then
|
||||
echo "🔍 npm audit を実行中..."
|
||||
if ! npm audit --audit-level=high --json 2>/dev/null | \
|
||||
python3 -c "
|
||||
import sys, json
|
||||
data = json.load(sys.stdin)
|
||||
vulns = data.get('metadata', {}).get('vulnerabilities', {})
|
||||
high = vulns.get('high', 0) + vulns.get('critical', 0)
|
||||
if high:
|
||||
print(f' ⚠️ {high} 件の高/致命的な npm 脆弱性を検出。実行: npm audit fix')
|
||||
sys.exit(1)
|
||||
" 2>/dev/null; then
|
||||
ISSUES_FOUND=1
|
||||
else
|
||||
echo " ✅ 高/致命的な npm 脆弱性なし"
|
||||
fi
|
||||
fi
|
||||
|
||||
if command -v yarn &>/dev/null && [[ "$BASENAME" == yarn.lock ]]; then
|
||||
echo "🔍 yarn audit を実行中..."
|
||||
if ! yarn audit --level high --json 2>/dev/null | \
|
||||
grep -q '"type":"auditAdvisory"' 2>/dev/null; then
|
||||
echo " ✅ 高レベルの yarn 脆弱性なし"
|
||||
else
|
||||
echo " ⚠️ yarn audit が脆弱性を検出。実行: yarn audit --level high"
|
||||
ISSUES_FOUND=1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# ── Python ───────────────────────────────────────────────────────────────────
|
||||
if [[ "$BASENAME" == requirements.txt || "$BASENAME" == Pipfile* || "$BASENAME" == pyproject.toml ]]; then
|
||||
if command -v pip-audit &>/dev/null; then
|
||||
echo "🔍 pip-audit を実行中..."
|
||||
if pip-audit --format=json 2>/dev/null | \
|
||||
python3 -c "
|
||||
import sys, json
|
||||
data = json.load(sys.stdin)
|
||||
vulns = [d for d in data.get('dependencies', []) if d.get('vulns')]
|
||||
if vulns:
|
||||
for dep in vulns:
|
||||
for v in dep['vulns']:
|
||||
print(f' ⚠️ {dep[\"name\"]} {dep[\"version\"]}: {v[\"id\"]} — {v[\"fix_versions\"]}')
|
||||
sys.exit(1)
|
||||
" 2>/dev/null; then
|
||||
echo " ✅ Python の脆弱性なし"
|
||||
else
|
||||
ISSUES_FOUND=1
|
||||
echo " 詳細は実行: pip-audit"
|
||||
fi
|
||||
elif command -v safety &>/dev/null; then
|
||||
echo "🔍 safety check を実行中..."
|
||||
OUTPUT=$(safety check --short-report 2>&1)
|
||||
EXIT_CODE=$?
|
||||
if [ $EXIT_CODE -eq 0 ]; then
|
||||
echo " ✅ Python の脆弱性なし"
|
||||
elif echo "$OUTPUT" | grep -qiE "vulnerability|CVE|insecure"; then
|
||||
echo "$OUTPUT"
|
||||
ISSUES_FOUND=1
|
||||
else
|
||||
echo " ⚠️ safety check が完了できなかった(ネットワークまたは設定エラー)" >&2
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# ── Go ───────────────────────────────────────────────────────────────────────
|
||||
if [[ "$BASENAME" == go.mod || "$BASENAME" == go.sum ]]; then
|
||||
if command -v govulncheck &>/dev/null; then
|
||||
echo "🔍 govulncheck を実行中..."
|
||||
OUTPUT=$(govulncheck ./... 2>&1)
|
||||
EXIT_CODE=$?
|
||||
if [ $EXIT_CODE -eq 0 ]; then
|
||||
echo " ✅ Go の脆弱性なし"
|
||||
elif echo "$OUTPUT" | grep -q "Vulnerability #"; then
|
||||
echo "$OUTPUT"
|
||||
ISSUES_FOUND=1
|
||||
else
|
||||
echo " ⚠️ govulncheck が完了できなかった: $OUTPUT" >&2
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# ── Rust ─────────────────────────────────────────────────────────────────────
|
||||
if [[ "$BASENAME" == Cargo.toml || "$BASENAME" == Cargo.lock ]]; then
|
||||
if command -v cargo-audit &>/dev/null; then
|
||||
echo "🔍 cargo audit を実行中..."
|
||||
if ! cargo audit 2>/dev/null; then
|
||||
ISSUES_FOUND=1
|
||||
else
|
||||
echo " ✅ Rust の脆弱性なし"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# ── Ruby ─────────────────────────────────────────────────────────────────────
|
||||
if [[ "$BASENAME" == Gemfile || "$BASENAME" == Gemfile.lock ]]; then
|
||||
if command -v bundler-audit &>/dev/null; then
|
||||
echo "🔍 bundler-audit を実行中..."
|
||||
bundler-audit check --update 2>/dev/null || ISSUES_FOUND=1
|
||||
fi
|
||||
fi
|
||||
|
||||
# ── 汎用フォールバック:trivy ───────────────────────────────────────────────
|
||||
if command -v trivy &>/dev/null; then
|
||||
echo "🔍 trivy fs scan を実行中..."
|
||||
if ! trivy fs --exit-code 1 --severity HIGH,CRITICAL --quiet . 2>/dev/null; then
|
||||
ISSUES_FOUND=1
|
||||
else
|
||||
echo " ✅ trivy は HIGH/CRITICAL の問題を検出せず"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$ISSUES_FOUND" -eq 0 ]; then
|
||||
echo "✅ 依存関係チェック合格 — 脆弱性は検出されませんでした"
|
||||
else
|
||||
echo ""
|
||||
echo "⚠️ 脆弱性が検出されました。コミット前に依存関係を確認・更新してください。"
|
||||
echo " このフックは助言のみで、ワークフローをブロックしません。"
|
||||
fi
|
||||
|
||||
# 常に exit 0 — このフックは警告のみで、ブロックしない
|
||||
exit 0
|
||||
@@ -0,0 +1,49 @@
|
||||
#!/bin/bash
|
||||
# 書き込み後にコードを自動整形する
|
||||
# フック:PostToolUse:Write
|
||||
#
|
||||
# 標準入力の JSON から対象ファイルパスを読み取り、Claude がファイルを書き込んだ
|
||||
# 後に、そのファイルに対して適切なフォーマッタをインプレースで実行する。
|
||||
#
|
||||
# 対応:macOS、Linux、Windows(Git Bash)
|
||||
|
||||
# Claude Code フックプロトコルに従い、標準入力から JSON を読み取る
|
||||
INPUT=$(cat)
|
||||
|
||||
# sed で file_path を抽出(全プラットフォーム互換)
|
||||
FILE_PATH=$(echo "$INPUT" | sed -n 's/.*"file_path"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' | head -1)
|
||||
|
||||
if [ -z "$FILE_PATH" ] || [ ! -f "$FILE_PATH" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# ファイル種別を判定して整形
|
||||
case "$FILE_PATH" in
|
||||
*.js|*.jsx|*.ts|*.tsx)
|
||||
if command -v prettier &> /dev/null; then
|
||||
prettier --write "$FILE_PATH" 2>/dev/null
|
||||
fi
|
||||
;;
|
||||
*.py)
|
||||
if command -v black &> /dev/null; then
|
||||
black "$FILE_PATH" 2>/dev/null
|
||||
fi
|
||||
;;
|
||||
*.go)
|
||||
if command -v gofmt &> /dev/null; then
|
||||
gofmt -w "$FILE_PATH" 2>/dev/null
|
||||
fi
|
||||
;;
|
||||
*.rs)
|
||||
if command -v rustfmt &> /dev/null; then
|
||||
rustfmt "$FILE_PATH" 2>/dev/null
|
||||
fi
|
||||
;;
|
||||
*.java)
|
||||
if command -v google-java-format &> /dev/null; then
|
||||
google-java-format -i "$FILE_PATH" 2>/dev/null
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,31 @@
|
||||
#!/bin/bash
|
||||
# すべての bash コマンドを記録する
|
||||
# フック:PostToolUse:Bash
|
||||
#
|
||||
# 標準入力の JSON から実行コマンドを読み取り、ファイルに記録する。
|
||||
#
|
||||
# 対応:macOS、Linux、Windows(Git Bash)
|
||||
|
||||
# Claude Code フックプロトコルに従い、標準入力から JSON を読み取る
|
||||
INPUT=$(cat)
|
||||
|
||||
# tool_input から bash コマンドを抽出
|
||||
# 注:sed の [^"]* は JSON 内のエスケープされた引用符で停止する。ダブルクォートを
|
||||
# 含むコマンドの場合、最初の \" までしかキャプチャできない。これは sed ベースの
|
||||
# JSON パースの既知の制約だが、ロギング用途としては許容範囲。
|
||||
COMMAND=$(echo "$INPUT" | sed -n 's/.*"command"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' | head -1)
|
||||
|
||||
if [ -z "$COMMAND" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
|
||||
LOGFILE="$HOME/.claude/bash-commands.log"
|
||||
|
||||
# ログディレクトリが無ければ作成
|
||||
mkdir -p "$(dirname "$LOGFILE")"
|
||||
|
||||
# コマンドを記録
|
||||
echo "[$TIMESTAMP] $COMMAND" >> "$LOGFILE"
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,68 @@
|
||||
#!/bin/bash
|
||||
# イベント発生時に通知を送信する
|
||||
# フック:PostToolUse(matcher: Bash)— bash コマンドの後に実行し、スクリプト側で git push を判別する
|
||||
# 注:Claude Code にネイティブの PostPush イベントは無い。git push をトリガにするには、
|
||||
# matcher または本スクリプト内の条件で bash コマンド文字列に "git push" が含まれるかを確認する。
|
||||
|
||||
REPO_NAME=$(basename $(git rev-parse --show-toplevel 2>/dev/null) 2>/dev/null)
|
||||
COMMIT_MSG=$(git log -1 --pretty=%B 2>/dev/null)
|
||||
AUTHOR=$(git log -1 --pretty=%an 2>/dev/null)
|
||||
BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null)
|
||||
|
||||
echo "📢 チームへ通知を送信しています..."
|
||||
|
||||
# Slack Webhook の例(Webhook URL は自分のものに置き換える)
|
||||
SLACK_WEBHOOK="${SLACK_WEBHOOK_URL:-}"
|
||||
|
||||
if [ -n "$SLACK_WEBHOOK" ]; then
|
||||
curl -X POST "$SLACK_WEBHOOK" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d "{
|
||||
\"text\": \"*$REPO_NAME* に新しい push がありました\",
|
||||
\"attachments\": [{
|
||||
\"color\": \"good\",
|
||||
\"fields\": [
|
||||
{\"title\": \"ブランチ\", \"value\": \"$BRANCH\", \"short\": true},
|
||||
{\"title\": \"作者\", \"value\": \"$AUTHOR\", \"short\": true},
|
||||
{\"title\": \"コミット\", \"value\": \"$COMMIT_MSG\"}
|
||||
]
|
||||
}]
|
||||
}" \
|
||||
--silent --output /dev/null
|
||||
|
||||
echo "✅ Slack 通知を送信しました"
|
||||
fi
|
||||
|
||||
# Discord Webhook の例(Webhook URL は自分のものに置き換える)
|
||||
DISCORD_WEBHOOK="${DISCORD_WEBHOOK_URL:-}"
|
||||
|
||||
if [ -n "$DISCORD_WEBHOOK" ]; then
|
||||
curl -X POST "$DISCORD_WEBHOOK" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d "{
|
||||
\"content\": \"**$REPO_NAME に新しい push がありました**\",
|
||||
\"embeds\": [{
|
||||
\"title\": \"$COMMIT_MSG\",
|
||||
\"color\": 3066993,
|
||||
\"fields\": [
|
||||
{\"name\": \"ブランチ\", \"value\": \"$BRANCH\", \"inline\": true},
|
||||
{\"name\": \"作者\", \"value\": \"$AUTHOR\", \"inline\": true}
|
||||
]
|
||||
}]
|
||||
}" \
|
||||
--silent --output /dev/null
|
||||
|
||||
echo "✅ Discord 通知を送信しました"
|
||||
fi
|
||||
|
||||
# Email 通知の例
|
||||
EMAIL_TO="${TEAM_EMAIL:-}"
|
||||
|
||||
if [ -n "$EMAIL_TO" ]; then
|
||||
echo "$AUTHOR が $REPO_NAME に push しました" | \
|
||||
mail -s "Git Push: $BRANCH" "$EMAIL_TO"
|
||||
|
||||
echo "✅ Email 通知を送信しました"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,50 @@
|
||||
#!/bin/bash
|
||||
# コミット前にテストを実行する
|
||||
# フック:PreToolUse(matcher: Bash)— コマンドが git commit か判定する
|
||||
# 注:「PreCommit」フックイベントは存在しない。PreToolUse と Bash matcher の組み合わせで
|
||||
# コマンドを検査し、git commit を検出する。
|
||||
|
||||
echo "🧪 コミット前にテストを実行しています..."
|
||||
|
||||
# package.json の有無を確認(Node.js プロジェクト)
|
||||
if [ -f "package.json" ]; then
|
||||
if grep -q "\"test\":" package.json; then
|
||||
npm test
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "❌ テスト失敗。コミットをブロックします。"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# pytest が使えるか確認(Python プロジェクト)
|
||||
if [ -f "pytest.ini" ] || [ -f "setup.py" ]; then
|
||||
if command -v pytest &> /dev/null; then
|
||||
pytest
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "❌ テスト失敗。コミットをブロックします。"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# go.mod の有無を確認(Go プロジェクト)
|
||||
if [ -f "go.mod" ]; then
|
||||
go test ./...
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "❌ テスト失敗。コミットをブロックします。"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Cargo.toml の有無を確認(Rust プロジェクト)
|
||||
if [ -f "Cargo.toml" ]; then
|
||||
cargo test
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "❌ テスト失敗。コミットをブロックします。"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "✅ 全テスト合格。コミットを続行します。"
|
||||
exit 0
|
||||
@@ -0,0 +1,128 @@
|
||||
#!/bin/bash
|
||||
# Bash コマンドの事前安全チェック
|
||||
# フック:PreToolUse(matcher: Bash)
|
||||
#
|
||||
# このフックは Bash ツールが実行されるたびに走り、破壊的またはハイリスクなシェル
|
||||
# コマンドをブロック/警告する。
|
||||
#
|
||||
# セットアップ:
|
||||
# cp 06-hooks/pre-tool-check.sh ~/.claude/hooks/
|
||||
# chmod +x ~/.claude/hooks/pre-tool-check.sh
|
||||
#
|
||||
# ~/.claude/settings.json の設定例:
|
||||
# {
|
||||
# "hooks": {
|
||||
# "PreToolUse": [
|
||||
# {
|
||||
# "matcher": "Bash",
|
||||
# "hooks": [
|
||||
# {
|
||||
# "type": "command",
|
||||
# "command": "~/.claude/hooks/pre-tool-check.sh"
|
||||
# }
|
||||
# ]
|
||||
# }
|
||||
# ]
|
||||
# }
|
||||
# }
|
||||
#
|
||||
# 入力:以下の形式の JSON を標準入力から受け取る:
|
||||
# { "tool_name": "Bash", "tool_input": { "command": "..." } }
|
||||
#
|
||||
# 出力規約(Claude Code フックプロトコルに準拠):
|
||||
# - exit 0 → 許可。stdout には JSON(hookSpecificOutput)を出力可能。stderr は
|
||||
# 黙って捨てられるため、stderr への警告出力は表示されない。許可された
|
||||
# コマンドの可観測性を担保するには、監査ログファイルに書き出す。
|
||||
# - exit 2 → ブロック。stderr が Claude にブロック理由として返される。
|
||||
# ブロック理由を説明する echo は必ず `>&2` で stderr にリダイレクトする。
|
||||
# さもないと Claude Code は「No stderr output」と報告する。
|
||||
#
|
||||
# 監査ログ:すべての呼び出しを以下に記録する
|
||||
# $CLAUDE_PROJECT_DIR/.claude/hooks/audit.log
|
||||
# 判定(BLOCK/WARN/ALLOW)と一緒に保存するため、stderr が Claude Code に捨てられる
|
||||
# WARN 階層のマッチも観測できる。
|
||||
|
||||
# 標準入力から JSON 全体を読み取る
|
||||
INPUT=$(cat)
|
||||
|
||||
# 移植性のある sed でコマンドを抽出(macOS / Linux 双方互換)
|
||||
COMMAND=$(echo "$INPUT" | sed -n 's/.*"command"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' | head -1)
|
||||
|
||||
# 抽出に失敗した場合は生の入力にフォールバック
|
||||
if [ -z "$COMMAND" ]; then
|
||||
COMMAND="$INPUT"
|
||||
fi
|
||||
|
||||
# ── 監査ログ ─────────────────────────────────────────────────────────────────
|
||||
# すべての呼び出しを最終判定とともに記録する。Claude Code は exit 0 のときに
|
||||
# stderr を黙って捨てるため、WARN 階層を確実に観測できる唯一の手段がこれ。
|
||||
# Claude Code 外(ローカルテスト等)では $(pwd) にフォールバックする。
|
||||
LOG_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}/.claude/hooks"
|
||||
LOG_FILE="$LOG_DIR/audit.log"
|
||||
mkdir -p "$LOG_DIR" 2>/dev/null
|
||||
log_decision() {
|
||||
echo "$(date -u +%FT%TZ) [$1] $COMMAND" >> "$LOG_FILE"
|
||||
}
|
||||
|
||||
# ── ブロックパターン ─────────────────────────────────────────────────────────
|
||||
# 自動化された文脈ではほぼ確実に破壊的かつ意図的でないため、無条件にブロックする。
|
||||
|
||||
BLOCKED_PATTERNS=(
|
||||
# `rm -rf /` を厳密に判定するため、`/` の後に空白か行末を要求する。
|
||||
# 部分一致だと `rm -rf /tmp/foo` のような正当ケースを誤検出してしまう。
|
||||
"rm -rf /([[:space:]]|$)"
|
||||
"rm -rf \*"
|
||||
"dd if=/dev/zero"
|
||||
"dd if=/dev/random"
|
||||
":\(\)\{:\|:&\};:" # フォーク爆弾(正規表現メタ文字をエスケープ)
|
||||
"mkfs\." # ファイルシステムのフォーマット
|
||||
"format c:" # Windows のディスクフォーマット
|
||||
)
|
||||
|
||||
for pattern in "${BLOCKED_PATTERNS[@]}"; do
|
||||
if echo "$COMMAND" | grep -qE "$pattern"; then
|
||||
log_decision "BLOCK:$pattern"
|
||||
# ここの echo は必ず stderr へ — Claude Code は exit 2 のとき stderr を
|
||||
# ブロック理由として表面化する。stdout に書くと「No stderr output」と表示される。
|
||||
echo "❌ ブロック:破壊的な可能性のあるコマンドを検出: $pattern" >&2
|
||||
echo " コマンド: $COMMAND" >&2
|
||||
exit 2
|
||||
fi
|
||||
done
|
||||
|
||||
# ── 警告パターン ─────────────────────────────────────────────────────────────
|
||||
# リスクは高いが意図的な場合もある。警告を記録して許可する。
|
||||
|
||||
WARNING_PATTERNS=(
|
||||
"rm -rf"
|
||||
"git push --force"
|
||||
"git reset --hard"
|
||||
"git clean -f"
|
||||
"chmod -R 777"
|
||||
"sudo rm"
|
||||
"DROP TABLE"
|
||||
"DROP DATABASE"
|
||||
"truncate"
|
||||
)
|
||||
|
||||
MATCHED_WARNINGS=""
|
||||
for pattern in "${WARNING_PATTERNS[@]}"; do
|
||||
if echo "$COMMAND" | grep -qi "$pattern"; then
|
||||
MATCHED_WARNINGS="${MATCHED_WARNINGS:+$MATCHED_WARNINGS,}$pattern"
|
||||
# フックを手動実行する人間向けに stderr へも警告を出す。
|
||||
# Claude Code は exit 0 のときこれを捨てるため、確実な記録は監査ログ
|
||||
# (WARN エントリ)参照のこと。
|
||||
echo "⚠️ 警告:ハイリスクな操作を検出: $pattern" >&2
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -n "$MATCHED_WARNINGS" ]; then
|
||||
log_decision "WARN:$MATCHED_WARNINGS"
|
||||
echo " コマンド: $COMMAND" >&2
|
||||
echo " 続行します — 上記の警告を確認してから続けてください。" >&2
|
||||
else
|
||||
log_decision "ALLOW"
|
||||
fi
|
||||
|
||||
# ── 許可 ────────────────────────────────────────────────────────────────────
|
||||
exit 0
|
||||
@@ -0,0 +1,78 @@
|
||||
#!/bin/bash
|
||||
# ファイル書き込み時のセキュリティスキャン
|
||||
# フック:PostToolUse:Write
|
||||
#
|
||||
# ハードコードされたシークレット・API キー・認証情報をファイルからスキャンする。
|
||||
# 検出時は additionalContext を介して非ブロッキングの警告を出力する。
|
||||
#
|
||||
# 対応:macOS、Linux、Windows(Git Bash)
|
||||
|
||||
# Claude Code フックプロトコルに従い、標準入力から JSON を読み取る
|
||||
INPUT=$(cat)
|
||||
|
||||
# sed で file_path を抽出(Windows Git Bash を含む全プラットフォーム互換)
|
||||
# grep -P(Windows Git Bash で使えない)と python3 依存を避ける
|
||||
FILE_PATH=$(echo "$INPUT" | sed -n 's/.*"file_path"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' | head -1)
|
||||
|
||||
if [ -z "$FILE_PATH" ] || [ ! -f "$FILE_PATH" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# バイナリファイル・ベンダディレクトリ・ビルド成果物はスキップ
|
||||
case "$FILE_PATH" in
|
||||
*.png|*.jpg|*.jpeg|*.gif|*.svg|*.ico|*.woff|*.woff2|*.ttf|*.eot) exit 0 ;;
|
||||
*/node_modules/*|*/.git/*|*/dist/*|*/build/*) exit 0 ;;
|
||||
esac
|
||||
|
||||
ISSUES=""
|
||||
|
||||
# ハードコードされたパスワードの検出
|
||||
# JSON 形式("password": "value")とコード形式(password = 'value')の両方に対応
|
||||
# 区切り文字には \\n を使う — JSON の改行エスケープとして有効で、printf でも安全に通る
|
||||
if grep -qiE '"password"[[:space:]]*:[[:space:]]*"[^"]+"' "$FILE_PATH" 2>/dev/null; then
|
||||
ISSUES="${ISSUES}- 警告: ハードコードされたパスワードの可能性を検出\\n"
|
||||
elif grep -qiE '(password|passwd|pwd)[[:space:]]*=[[:space:]]*'"'"'[^'"'"']+'"'"'' "$FILE_PATH" 2>/dev/null; then
|
||||
ISSUES="${ISSUES}- 警告: ハードコードされたパスワードの可能性を検出\\n"
|
||||
fi
|
||||
|
||||
# ハードコードされた API キーの検出
|
||||
if grep -qiE '"(api[_-]?key|apikey|access[_-]?token)"[[:space:]]*:[[:space:]]*"[^"]+"' "$FILE_PATH" 2>/dev/null; then
|
||||
ISSUES="${ISSUES}- 警告: ハードコードされた API キーの可能性を検出\\n"
|
||||
fi
|
||||
|
||||
# ハードコードされたシークレット・トークンの検出
|
||||
if grep -qiE '(secret|token)[[:space:]]*=[[:space:]]*['"'"'"][^'"'"'"]+['"'"'"]' "$FILE_PATH" 2>/dev/null; then
|
||||
ISSUES="${ISSUES}- 警告: ハードコードされたシークレットまたはトークンの可能性を検出\\n"
|
||||
fi
|
||||
|
||||
# 秘密鍵の検出
|
||||
if grep -q "BEGIN.*PRIVATE KEY" "$FILE_PATH" 2>/dev/null; then
|
||||
ISSUES="${ISSUES}- 警告: 秘密鍵を検出\\n"
|
||||
fi
|
||||
|
||||
# AWS アクセスキーの検出
|
||||
if grep -qE "AKIA[0-9A-Z]{16}" "$FILE_PATH" 2>/dev/null; then
|
||||
ISSUES="${ISSUES}- 警告: AWS アクセスキーを検出\\n"
|
||||
fi
|
||||
|
||||
# semgrep が利用可能ならスキャン(JSON 出力との混在を避けるため stdout は抑止)
|
||||
if command -v semgrep &> /dev/null; then
|
||||
semgrep --config=auto "$FILE_PATH" --quiet >/dev/null 2>/dev/null
|
||||
fi
|
||||
|
||||
# trufflehog が利用可能ならスキャン(JSON 出力との混在を避けるため stdout は抑止)
|
||||
if command -v trufflehog &> /dev/null; then
|
||||
trufflehog filesystem "$FILE_PATH" --only-verified --quiet >/dev/null 2>/dev/null
|
||||
fi
|
||||
|
||||
# 問題が見つかったら additionalContext として出力(非ブロッキング警告)
|
||||
# Claude Code PostToolUse プロトコルが要求する hookSpecificOutput 形式を使う
|
||||
if [ -n "$ISSUES" ]; then
|
||||
# ファイルパスを JSON 用にエスケープ(バックスラッシュとダブルクォート)
|
||||
# ISSUES は既に \\n を区切り文字に用いている(有効な JSON エスケープ)— ダブルクォートのみエスケープする
|
||||
SAFE_PATH=$(printf '%s' "$FILE_PATH" | sed 's/\\/\\\\/g; s/"/\\"/g')
|
||||
SAFE_ISSUES=$(printf '%s' "$ISSUES" | sed 's/"/\\"/g')
|
||||
printf '{"hookSpecificOutput": {"hookEventName": "PostToolUse", "additionalContext": "セキュリティスキャンで %s に問題を検出しました:\\n%s環境変数の使用を検討してください。"}}' "$SAFE_PATH" "$SAFE_ISSUES"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
Executable
+94
@@ -0,0 +1,94 @@
|
||||
#!/usr/bin/env bash
|
||||
# SessionEnd フック:取り組んだモジュールを尋ね、~/.claude-howto-progress.json に
|
||||
# セッション記録を追記して、学習進捗を永続的に追跡する。
|
||||
#
|
||||
# Claude Code セッション終了時に 1 回だけ発火する(応答ごとではない)。
|
||||
# 標準入力にはフックの JSON ペイロードが流れているため、対話入力には /dev/tty を使う。
|
||||
#
|
||||
# 導入:.claude/settings.json の "SessionEnd" イベントに登録する(下記参照)。
|
||||
|
||||
PROGRESS_FILE="$HOME/.claude-howto-progress.json"
|
||||
|
||||
# ガード:このリポジトリ内でのみ動かす
|
||||
if [[ "$CLAUDE_PROJECT_DIR" != *"claude-howto"* ]] && [[ "$PWD" != *"claude-howto"* ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# 進捗ファイルが無ければ作成
|
||||
if [ ! -f "$PROGRESS_FILE" ]; then
|
||||
echo '{"sessions":[]}' > "$PROGRESS_FILE"
|
||||
fi
|
||||
|
||||
DATE=$(date +"%Y-%m-%d")
|
||||
TIME=$(date +"%H:%M")
|
||||
|
||||
echo ""
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo " Claude Code — 学習セッション終了"
|
||||
echo " $DATE $TIME"
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo ""
|
||||
echo " どのモジュールに取り組みましたか?(例:06,07 / Enter でスキップ)"
|
||||
echo " 01=Slash 02=Memory 03=Skills 04=Subagents 05=MCP"
|
||||
echo " 06=Hooks 07=Plugins 08=Checkpoints 09=Advanced 10=CLI"
|
||||
echo ""
|
||||
printf " > "
|
||||
read -r INPUT </dev/tty
|
||||
|
||||
if [ -z "$INPUT" ] || [ "$INPUT" = "skip" ]; then
|
||||
echo " スキップ — セッションは記録しません。"
|
||||
echo ""
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# 短縮番号をモジュール名にマップする(bash 3.2 がパースできないため pipeline+while を避ける)
|
||||
IFS=',' read -ra PARTS <<< "$INPUT"
|
||||
MODULES_JSON=""
|
||||
for m in "${PARTS[@]}"; do
|
||||
m="${m// /}" # 空白を除去
|
||||
case "$m" in
|
||||
01) label='"01-slash-commands"' ;;
|
||||
02) label='"02-memory"' ;;
|
||||
03) label='"03-skills"' ;;
|
||||
04) label='"04-subagents"' ;;
|
||||
05) label='"05-mcp"' ;;
|
||||
06) label='"06-hooks"' ;;
|
||||
07) label='"07-plugins"' ;;
|
||||
08) label='"08-checkpoints"' ;;
|
||||
09) label='"09-advanced-features"' ;;
|
||||
10) label='"10-cli"' ;;
|
||||
*) label="\"$m\"" ;;
|
||||
esac
|
||||
MODULES_JSON="${MODULES_JSON:+$MODULES_JSON,}$label"
|
||||
done
|
||||
|
||||
printf " メモ?(任意、Enter でスキップ): "
|
||||
read -r NOTES </dev/tty
|
||||
|
||||
# NOTES は別引数で Python に渡し、JSON エスケープを Python 側に任せる。
|
||||
# メモに引用符やバックスラッシュが含まれても JSON が壊れないようにするため。
|
||||
python3 - "$PROGRESS_FILE" "$DATE" "$TIME" "$MODULES_JSON" "$NOTES" <<'PYEOF'
|
||||
import sys, json
|
||||
|
||||
path, date, time_str, modules_raw, notes = sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4], sys.argv[5]
|
||||
|
||||
new_session = {
|
||||
"date": date,
|
||||
"time": time_str,
|
||||
"modules": json.loads(f"[{modules_raw}]") if modules_raw else [],
|
||||
"notes": notes,
|
||||
}
|
||||
|
||||
with open(path, 'r') as f:
|
||||
data = json.load(f)
|
||||
|
||||
data.setdefault('sessions', []).append(new_session)
|
||||
|
||||
with open(path, 'w') as f:
|
||||
json.dump(data, f, indent=2)
|
||||
PYEOF
|
||||
|
||||
echo ""
|
||||
echo " $PROGRESS_FILE に保存しました"
|
||||
[ -n "$NOTES" ] && echo " メモ: $NOTES"
|
||||
echo ""
|
||||
@@ -0,0 +1,54 @@
|
||||
#!/bin/bash
|
||||
# ユーザプロンプトを検証する
|
||||
# フック:UserPromptSubmit
|
||||
#
|
||||
# 標準入力の JSON からユーザプロンプトを読み取り、危険な操作をブロックする。
|
||||
#
|
||||
# 対応:macOS、Linux、Windows(Git Bash)
|
||||
|
||||
# Claude Code フックプロトコルに従い、標準入力から JSON を読み取る
|
||||
INPUT=$(cat)
|
||||
|
||||
# JSON 入力からプロンプト本文を抽出
|
||||
# Claude Code は UserPromptSubmit を "user_prompt" で送る(無ければ "prompt" にフォールバック)
|
||||
PROMPT=$(echo "$INPUT" | sed -n 's/.*"user_prompt"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' | head -1)
|
||||
if [ -z "$PROMPT" ]; then
|
||||
PROMPT=$(echo "$INPUT" | sed -n 's/.*"prompt"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' | head -1)
|
||||
fi
|
||||
|
||||
if [ -z "$PROMPT" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# 危険な操作の検出
|
||||
DANGEROUS_PATTERNS=(
|
||||
"rm -rf /"
|
||||
"delete database"
|
||||
"drop database"
|
||||
"format disk"
|
||||
"dd if="
|
||||
)
|
||||
|
||||
for pattern in "${DANGEROUS_PATTERNS[@]}"; do
|
||||
if echo "$PROMPT" | grep -qi "$pattern"; then
|
||||
printf '{"decision": "block", "reason": "危険な操作を検出: %s"}' "$pattern"
|
||||
exit 0
|
||||
fi
|
||||
done
|
||||
|
||||
# 本番デプロイの検出
|
||||
if echo "$PROMPT" | grep -qiE "(deploy|push).*production"; then
|
||||
if [ ! -f ".deployment-approved" ]; then
|
||||
echo '{"decision": "block", "reason": "本番デプロイには承認が必要です。続行するには .deployment-approved ファイルを作成してください。"}'
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# 特定操作におけるコンテキスト要件のチェック
|
||||
if echo "$PROMPT" | grep -qi "refactor"; then
|
||||
if [ ! -d "tests" ] && [ ! -d "test" ]; then
|
||||
printf '{"additionalContext": "警告: テスト無しのリファクタリングはリスクを伴います。先にテストを書くことを検討してください。"}'
|
||||
fi
|
||||
fi
|
||||
|
||||
exit 0
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,120 @@
|
||||
<!-- i18n-source: 07-plugins/devops-automation/README.md -->
|
||||
<!-- i18n-source-sha: d17d515 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="../../resources/logos/claude-howto-logo-dark.svg">
|
||||
<img alt="Claude How To" src="../../resources/logos/claude-howto-logo.svg">
|
||||
</picture>
|
||||
|
||||
# DevOps Automation プラグイン
|
||||
|
||||
デプロイ、監視、インシデントレスポンスを統合した DevOps 自動化プラグイン。
|
||||
|
||||
## 機能
|
||||
|
||||
✅ 自動デプロイ
|
||||
✅ ロールバック手順
|
||||
✅ システム健全性の監視
|
||||
✅ インシデントレスポンスのワークフロー
|
||||
✅ Kubernetes 連携
|
||||
|
||||
## インストール
|
||||
|
||||
```bash
|
||||
/plugin install devops-automation
|
||||
```
|
||||
|
||||
## 同梱内容
|
||||
|
||||
### スラッシュコマンド
|
||||
- `/deploy` — 本番またはステージングへデプロイ
|
||||
- `/rollback` — 前バージョンへロールバック
|
||||
- `/status` — システムの健全性を確認
|
||||
- `/incident` — 本番インシデントに対応
|
||||
|
||||
### サブエージェント
|
||||
- `deployment-specialist` — デプロイ作業
|
||||
- `incident-commander` — インシデント統括
|
||||
- `alert-analyzer` — システム健全性の解析
|
||||
|
||||
### MCP サーバー
|
||||
- Kubernetes 連携
|
||||
|
||||
### スクリプト
|
||||
- `deploy.sh` — デプロイ自動化
|
||||
- `rollback.sh` — ロールバック自動化
|
||||
- `health-check.sh` — ヘルスチェックユーティリティ
|
||||
|
||||
### フック
|
||||
- `pre-deploy.js` — デプロイ前検証
|
||||
- `post-deploy.js` — デプロイ後処理
|
||||
|
||||
## 使い方
|
||||
|
||||
### ステージングへデプロイ
|
||||
```
|
||||
/deploy staging
|
||||
```
|
||||
|
||||
### 本番へデプロイ
|
||||
```
|
||||
/deploy production
|
||||
```
|
||||
|
||||
### ロールバック
|
||||
```
|
||||
/rollback production
|
||||
```
|
||||
|
||||
### ステータス確認
|
||||
```
|
||||
/status
|
||||
```
|
||||
|
||||
### インシデント対応
|
||||
```
|
||||
/incident
|
||||
```
|
||||
|
||||
## 必要要件
|
||||
|
||||
- Claude Code 1.0 以上
|
||||
- Kubernetes CLI(kubectl)
|
||||
- クラスタへのアクセス設定
|
||||
|
||||
## 設定
|
||||
|
||||
Kubernetes 設定をセットアップする:
|
||||
```bash
|
||||
export KUBECONFIG=~/.kube/config
|
||||
```
|
||||
|
||||
## ワークフロー例
|
||||
|
||||
```
|
||||
User: /deploy production
|
||||
|
||||
Claude:
|
||||
1. Runs pre-deploy hook (validates kubectl, cluster connection)
|
||||
2. Delegates to deployment-specialist subagent
|
||||
3. Runs deploy.sh script
|
||||
4. Monitors deployment progress via Kubernetes MCP
|
||||
5. Runs post-deploy hook (waits for pods, smoke tests)
|
||||
6. Provides deployment summary
|
||||
|
||||
Result:
|
||||
✅ Deployment complete
|
||||
📦 Version: v2.1.0
|
||||
🚀 Pods: 3/3 ready
|
||||
⏱️ Time: 2m 34s
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**最終更新**: 2026 年 4 月 24 日
|
||||
**Claude Code バージョン**: 2.1.119
|
||||
**出典**:
|
||||
- https://code.claude.com/docs/en/plugins
|
||||
- https://github.com/anthropics/claude-code/releases/tag/v2.1.119
|
||||
**対応モデル**: Claude Sonnet 4.6、Claude Opus 4.7、Claude Haiku 4.5
|
||||
@@ -0,0 +1,18 @@
|
||||
<!-- i18n-source: 07-plugins/devops-automation/agents/alert-analyzer.md -->
|
||||
<!-- i18n-source-sha: 5caeff2 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: alert-analyzer
|
||||
description: 監視アラートとシステムメトリクスを解析する
|
||||
tools: read, grep, bash
|
||||
---
|
||||
|
||||
# Alert Analyzer
|
||||
|
||||
システムの健全性とアラートを解析する:
|
||||
- アラートの相関分析
|
||||
- トレンド分析
|
||||
- 根本原因の特定
|
||||
- メトリクスの可視化
|
||||
- 問題の予兆検知
|
||||
@@ -0,0 +1,18 @@
|
||||
<!-- i18n-source: 07-plugins/devops-automation/agents/deployment-specialist.md -->
|
||||
<!-- i18n-source-sha: 5caeff2 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: deployment-specialist
|
||||
description: あらゆるデプロイ作業を担当する
|
||||
tools: read, write, bash, grep
|
||||
---
|
||||
|
||||
# Deployment Specialist
|
||||
|
||||
デプロイ作業のエキスパート:
|
||||
- ブルーグリーンデプロイ
|
||||
- カナリアリリース
|
||||
- ロールバック手順
|
||||
- ヘルスチェック
|
||||
- データベースマイグレーション
|
||||
@@ -0,0 +1,18 @@
|
||||
<!-- i18n-source: 07-plugins/devops-automation/agents/incident-commander.md -->
|
||||
<!-- i18n-source-sha: 5caeff2 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: incident-commander
|
||||
description: インシデントレスポンスを統括する
|
||||
tools: read, write, bash, grep
|
||||
---
|
||||
|
||||
# Incident Commander
|
||||
|
||||
インシデントレスポンスを管理する:
|
||||
- 重大度の評価
|
||||
- チーム調整
|
||||
- ステータス更新
|
||||
- 解決状況の追跡
|
||||
- ポストモーテムの取りまとめ
|
||||
@@ -0,0 +1,19 @@
|
||||
<!-- i18n-source: 07-plugins/devops-automation/commands/deploy.md -->
|
||||
<!-- i18n-source-sha: 5caeff2 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: Deploy
|
||||
description: アプリケーションを本番環境またはステージング環境へデプロイする
|
||||
---
|
||||
|
||||
# Deploy Application
|
||||
|
||||
デプロイのワークフローを実行する:
|
||||
|
||||
1. デプロイ前チェックを実行
|
||||
2. アプリケーションをビルド
|
||||
3. テストを実行
|
||||
4. 対象環境へデプロイ
|
||||
5. ヘルスチェックを実行
|
||||
6. Slack でチームに通知
|
||||
@@ -0,0 +1,20 @@
|
||||
<!-- i18n-source: 07-plugins/devops-automation/commands/incident.md -->
|
||||
<!-- i18n-source-sha: 5caeff2 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: Incident Response
|
||||
description: 構造化された手順で本番インシデントに対応する
|
||||
---
|
||||
|
||||
# Incident Response
|
||||
|
||||
構造化されたインシデントレスポンスのワークフロー:
|
||||
|
||||
1. インシデントレコードを作成
|
||||
2. 重大度と影響範囲を評価
|
||||
3. オンコールチームへ通知
|
||||
4. 診断情報を収集
|
||||
5. 対応活動を統率
|
||||
6. 解決内容をドキュメント化
|
||||
7. ポストモーテムを設定
|
||||
@@ -0,0 +1,18 @@
|
||||
<!-- i18n-source: 07-plugins/devops-automation/commands/rollback.md -->
|
||||
<!-- i18n-source-sha: 5caeff2 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: Rollback
|
||||
description: 前回のデプロイへロールバックする
|
||||
---
|
||||
|
||||
# Rollback Deployment
|
||||
|
||||
直前の安定バージョンへロールバックする:
|
||||
|
||||
1. 前回のデプロイを特定
|
||||
2. ロールバック先が正常であることを確認
|
||||
3. ロールバック手順を実行
|
||||
4. ヘルスチェックを実行
|
||||
5. チームに通知
|
||||
@@ -0,0 +1,19 @@
|
||||
<!-- i18n-source: 07-plugins/devops-automation/commands/status.md -->
|
||||
<!-- i18n-source-sha: 5caeff2 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: System Status
|
||||
description: システム全体の健全性とステータスを確認する
|
||||
---
|
||||
|
||||
# System Status Check
|
||||
|
||||
全サービスにわたってシステムの健全性を確認する:
|
||||
|
||||
1. Kubernetes Pod のステータスを照会
|
||||
2. データベース接続を確認
|
||||
3. API のレスポンスタイムを監視
|
||||
4. エラー率をレビュー
|
||||
5. リソース使用率を確認
|
||||
6. 全体の健全性を報告
|
||||
@@ -0,0 +1,132 @@
|
||||
<!-- i18n-source: 07-plugins/documentation/README.md -->
|
||||
<!-- i18n-source-sha: d17d515 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="../../resources/logos/claude-howto-logo-dark.svg">
|
||||
<img alt="Claude How To" src="../../resources/logos/claude-howto-logo.svg">
|
||||
</picture>
|
||||
|
||||
# Documentation プラグイン
|
||||
|
||||
プロジェクトのドキュメント生成と保守を包括的に行うプラグイン。
|
||||
|
||||
## 機能
|
||||
|
||||
✅ API ドキュメント生成
|
||||
✅ README の作成と更新
|
||||
✅ ドキュメント同期
|
||||
✅ コードコメントの改善
|
||||
✅ サンプルコード生成
|
||||
|
||||
## インストール
|
||||
|
||||
```bash
|
||||
/plugin install documentation
|
||||
```
|
||||
|
||||
## 同梱内容
|
||||
|
||||
### スラッシュコマンド
|
||||
- `/generate-api-docs` — API ドキュメントを生成
|
||||
- `/generate-readme` — README を作成または更新
|
||||
- `/sync-docs` — コード変更にドキュメントを同期
|
||||
- `/validate-docs` — ドキュメントを検証
|
||||
|
||||
### サブエージェント
|
||||
- `api-documenter` — API ドキュメンテーションのスペシャリスト
|
||||
- `code-commentator` — コードコメントの改善
|
||||
- `example-generator` — コード例の作成
|
||||
|
||||
### テンプレート
|
||||
- `api-endpoint.md` — API エンドポイントのドキュメントテンプレート
|
||||
- `function-docs.md` — 関数ドキュメントのテンプレート
|
||||
- `adr-template.md` — Architecture Decision Record(ADR)テンプレート
|
||||
|
||||
### MCP サーバー
|
||||
- ドキュメント同期のための GitHub 連携
|
||||
|
||||
## 使い方
|
||||
|
||||
### API ドキュメントを生成
|
||||
```
|
||||
/generate-api-docs
|
||||
```
|
||||
|
||||
### README を作成
|
||||
```
|
||||
/generate-readme
|
||||
```
|
||||
|
||||
### ドキュメントを同期
|
||||
```
|
||||
/sync-docs
|
||||
```
|
||||
|
||||
### ドキュメントを検証
|
||||
```
|
||||
/validate-docs
|
||||
```
|
||||
|
||||
## 必要要件
|
||||
|
||||
- Claude Code 1.0 以上
|
||||
- GitHub アクセス(任意)
|
||||
|
||||
## ワークフロー例
|
||||
|
||||
```
|
||||
User: /generate-api-docs
|
||||
|
||||
Claude:
|
||||
1. Scans all API endpoints in /src/api/
|
||||
2. Delegates to api-documenter subagent
|
||||
3. Extracts function signatures and JSDoc
|
||||
4. Organizes by module/endpoint
|
||||
5. Uses api-endpoint.md template
|
||||
6. Generates comprehensive markdown docs
|
||||
7. Includes curl, JavaScript, and Python examples
|
||||
|
||||
Result:
|
||||
✅ API documentation generated
|
||||
📄 Files created:
|
||||
- docs/api/users.md
|
||||
- docs/api/auth.md
|
||||
- docs/api/products.md
|
||||
📊 Coverage: 23/23 endpoints documented
|
||||
```
|
||||
|
||||
## テンプレートの使い方
|
||||
|
||||
### API Endpoint テンプレート
|
||||
REST API エンドポイントを完全な例つきでドキュメント化する。
|
||||
|
||||
### Function Documentation テンプレート
|
||||
個々の関数 / メソッドのドキュメント化に使う。
|
||||
|
||||
### ADR テンプレート
|
||||
アーキテクチャ判断のドキュメント化に使う。
|
||||
|
||||
## 設定
|
||||
|
||||
ドキュメント同期用の GitHub トークンを設定する:
|
||||
```bash
|
||||
export GITHUB_TOKEN="your_github_token"
|
||||
```
|
||||
|
||||
## ベストプラクティス
|
||||
|
||||
- ドキュメントはコードの近くに置く
|
||||
- コード変更とともにドキュメントも更新する
|
||||
- 実用的な例を含める
|
||||
- 定期的に検証する
|
||||
- 一貫性のためにテンプレートを使う
|
||||
|
||||
---
|
||||
|
||||
**最終更新**: 2026 年 4 月 24 日
|
||||
**Claude Code バージョン**: 2.1.119
|
||||
**出典**:
|
||||
- https://code.claude.com/docs/en/plugins
|
||||
- https://github.com/anthropics/claude-code/releases/tag/v2.1.119
|
||||
**対応モデル**: Claude Sonnet 4.6、Claude Opus 4.7、Claude Haiku 4.5
|
||||
@@ -0,0 +1,18 @@
|
||||
<!-- i18n-source: 07-plugins/documentation/agents/api-documenter.md -->
|
||||
<!-- i18n-source-sha: 5caeff2 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: api-documenter
|
||||
description: API ドキュメンテーションのスペシャリスト
|
||||
tools: read, write, grep
|
||||
---
|
||||
|
||||
# API Documenter
|
||||
|
||||
包括的な API ドキュメントを作成する:
|
||||
- エンドポイントのドキュメント化
|
||||
- パラメータの説明
|
||||
- レスポンススキーマ
|
||||
- コード例(curl、JS、Python)
|
||||
- エラーコード
|
||||
@@ -0,0 +1,18 @@
|
||||
<!-- i18n-source: 07-plugins/documentation/agents/code-commentator.md -->
|
||||
<!-- i18n-source-sha: 5caeff2 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: code-commentator
|
||||
description: コードコメントとインラインドキュメントのスペシャリスト
|
||||
tools: read, write, edit
|
||||
---
|
||||
|
||||
# Code Commentator
|
||||
|
||||
コードのドキュメント品質を向上させる:
|
||||
- JSDoc / docstring コメント
|
||||
- インライン説明
|
||||
- パラメータの説明
|
||||
- 戻り値の型ドキュメント
|
||||
- 使用例
|
||||
@@ -0,0 +1,18 @@
|
||||
<!-- i18n-source: 07-plugins/documentation/agents/example-generator.md -->
|
||||
<!-- i18n-source-sha: 5caeff2 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: example-generator
|
||||
description: コード例とチュートリアルのスペシャリスト
|
||||
tools: read, write
|
||||
---
|
||||
|
||||
# Example Generator
|
||||
|
||||
実用的なコード例を作成する:
|
||||
- 入門ガイド
|
||||
- よくあるユースケース
|
||||
- 連携のサンプル
|
||||
- ベストプラクティス
|
||||
- トラブルシューティングのシナリオ
|
||||
@@ -0,0 +1,19 @@
|
||||
<!-- i18n-source: 07-plugins/documentation/commands/generate-api-docs.md -->
|
||||
<!-- i18n-source-sha: 5caeff2 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: Generate API Documentation
|
||||
description: ソースコードから包括的な API ドキュメントを生成する
|
||||
---
|
||||
|
||||
# API Documentation Generator
|
||||
|
||||
完全な API ドキュメントを生成する:
|
||||
|
||||
1. API エンドポイントをスキャン
|
||||
2. 関数シグネチャと JSDoc を抽出
|
||||
3. モジュール / エンドポイントごとに整理
|
||||
4. 例つきの Markdown を作成
|
||||
5. リクエスト / レスポンスのスキーマを含める
|
||||
6. エラーのドキュメントを追加
|
||||
@@ -0,0 +1,19 @@
|
||||
<!-- i18n-source: 07-plugins/documentation/commands/generate-readme.md -->
|
||||
<!-- i18n-source-sha: 5caeff2 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: Generate README
|
||||
description: プロジェクト README を作成または更新する
|
||||
---
|
||||
|
||||
# README Generator
|
||||
|
||||
包括的な README を生成する:
|
||||
|
||||
1. プロジェクト概要と説明
|
||||
2. インストール手順
|
||||
3. 使用例
|
||||
4. API ドキュメントへのリンク
|
||||
5. コントリビューションガイドライン
|
||||
6. ライセンス情報
|
||||
@@ -0,0 +1,18 @@
|
||||
<!-- i18n-source: 07-plugins/documentation/commands/sync-docs.md -->
|
||||
<!-- i18n-source-sha: 5caeff2 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: Sync Documentation
|
||||
description: コード変更にドキュメントを同期する
|
||||
---
|
||||
|
||||
# Documentation Sync
|
||||
|
||||
コードベースとドキュメントを同期する:
|
||||
|
||||
1. コード変更を検出
|
||||
2. 古くなったドキュメントを特定
|
||||
3. 影響を受けるドキュメントを更新
|
||||
4. サンプルが今も動くことを検証
|
||||
5. バージョン番号を更新
|
||||
@@ -0,0 +1,18 @@
|
||||
<!-- i18n-source: 07-plugins/documentation/commands/validate-docs.md -->
|
||||
<!-- i18n-source-sha: 5caeff2 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: Validate Documentation
|
||||
description: ドキュメントの完全性と正確性を検証する
|
||||
---
|
||||
|
||||
# Documentation Validation
|
||||
|
||||
ドキュメント品質を検証する:
|
||||
|
||||
1. リンク切れをチェック
|
||||
2. コード例を検証
|
||||
3. 完全性を確認
|
||||
4. フォーマットをチェック
|
||||
5. 実際のコードと突き合わせて検証
|
||||
@@ -0,0 +1,43 @@
|
||||
<!-- i18n-source: 07-plugins/documentation/templates/adr-template.md -->
|
||||
<!-- i18n-source-sha: 5caeff2 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
# ADR [Number]: [Title]
|
||||
|
||||
## ステータス
|
||||
[Proposed | Accepted | Deprecated | Superseded]
|
||||
|
||||
## 背景
|
||||
この判断や変更を促している、いま発生している問題は何か?
|
||||
|
||||
## 決定事項
|
||||
提案している、あるいは実施している変更は何か?
|
||||
|
||||
## 影響
|
||||
この変更により、何が容易になり、何が難しくなるか?
|
||||
|
||||
### ポジティブ
|
||||
- メリット 1
|
||||
- メリット 2
|
||||
|
||||
### ネガティブ
|
||||
- デメリット 1
|
||||
- デメリット 2
|
||||
|
||||
### ニュートラル
|
||||
- 留意点 1
|
||||
- 留意点 2
|
||||
|
||||
## 検討した代替案
|
||||
他にどのような選択肢を検討し、なぜ採用しなかったか?
|
||||
|
||||
### 代替案 1
|
||||
内容と採用しなかった理由。
|
||||
|
||||
### 代替案 2
|
||||
内容と採用しなかった理由。
|
||||
|
||||
## 参考資料
|
||||
- 関連 ADR
|
||||
- 外部ドキュメント
|
||||
- 議論へのリンク
|
||||
@@ -0,0 +1,105 @@
|
||||
<!-- i18n-source: 07-plugins/documentation/templates/api-endpoint.md -->
|
||||
<!-- i18n-source-sha: 5caeff2 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
# [METHOD] /api/v1/[endpoint]
|
||||
|
||||
## 説明
|
||||
このエンドポイントの動作の簡単な説明。
|
||||
|
||||
## 認証
|
||||
必要な認証方式(例:Bearer トークン)。
|
||||
|
||||
## パラメータ
|
||||
|
||||
### Path Parameters
|
||||
| Name | Type | Required | 説明 |
|
||||
|------|------|----------|-----|
|
||||
| id | string | Yes | リソース ID |
|
||||
|
||||
### Query Parameters
|
||||
| Name | Type | Required | 説明 |
|
||||
|------|------|----------|-----|
|
||||
| page | integer | No | ページ番号(デフォルト: 1) |
|
||||
| limit | integer | No | 1 ページあたりの件数(デフォルト: 20) |
|
||||
|
||||
### Request Body
|
||||
```json
|
||||
{
|
||||
"field": "value"
|
||||
}
|
||||
```
|
||||
|
||||
## レスポンス
|
||||
|
||||
### 200 OK
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": {
|
||||
"id": "123",
|
||||
"name": "Example"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 400 Bad Request
|
||||
```json
|
||||
{
|
||||
"success": false,
|
||||
"error": {
|
||||
"code": "VALIDATION_ERROR",
|
||||
"message": "Invalid input"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 404 Not Found
|
||||
```json
|
||||
{
|
||||
"success": false,
|
||||
"error": {
|
||||
"code": "NOT_FOUND",
|
||||
"message": "Resource not found"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## サンプル
|
||||
|
||||
### cURL
|
||||
```bash
|
||||
curl -X GET "https://api.example.com/api/v1/endpoint" \
|
||||
-H "Authorization: Bearer YOUR_TOKEN" \
|
||||
-H "Content-Type: application/json"
|
||||
```
|
||||
|
||||
### JavaScript
|
||||
```javascript
|
||||
const response = await fetch('/api/v1/endpoint', {
|
||||
headers: {
|
||||
'Authorization': 'Bearer token',
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
});
|
||||
const data = await response.json();
|
||||
```
|
||||
|
||||
### Python
|
||||
```python
|
||||
import requests
|
||||
|
||||
response = requests.get(
|
||||
'https://api.example.com/api/v1/endpoint',
|
||||
headers={'Authorization': 'Bearer token'}
|
||||
)
|
||||
data = response.json()
|
||||
```
|
||||
|
||||
## レート制限
|
||||
- 認証済みユーザーは 1 時間あたり 1000 リクエスト
|
||||
- 公開エンドポイントは 1 時間あたり 100 リクエスト
|
||||
|
||||
## 関連エンドポイント
|
||||
- [GET /api/v1/related](#)
|
||||
- [POST /api/v1/related](#)
|
||||
@@ -0,0 +1,54 @@
|
||||
<!-- i18n-source: 07-plugins/documentation/templates/function-docs.md -->
|
||||
<!-- i18n-source-sha: 5caeff2 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
# 関数: `functionName`
|
||||
|
||||
## 説明
|
||||
関数の動作の簡単な説明。
|
||||
|
||||
## シグネチャ
|
||||
```typescript
|
||||
function functionName(param1: Type1, param2: Type2): ReturnType
|
||||
```
|
||||
|
||||
## パラメータ
|
||||
|
||||
| Parameter | Type | Required | 説明 |
|
||||
|-----------|------|----------|-----|
|
||||
| param1 | Type1 | Yes | param1 の説明 |
|
||||
| param2 | Type2 | No | param2 の説明 |
|
||||
|
||||
## 戻り値
|
||||
**Type**: `ReturnType`
|
||||
|
||||
返される値の説明。
|
||||
|
||||
## 例外
|
||||
- `Error`: 不正な入力が与えられたとき
|
||||
- `TypeError`: 誤った型が渡されたとき
|
||||
|
||||
## サンプル
|
||||
|
||||
### 基本的な使い方
|
||||
```typescript
|
||||
const result = functionName('value1', 'value2');
|
||||
console.log(result);
|
||||
```
|
||||
|
||||
### 応用的な使い方
|
||||
```typescript
|
||||
const result = functionName(
|
||||
complexParam1,
|
||||
{ option: true }
|
||||
);
|
||||
```
|
||||
|
||||
## 補足
|
||||
- 追加の注意事項や警告
|
||||
- パフォーマンス上の考慮事項
|
||||
- ベストプラクティス
|
||||
|
||||
## 関連項目
|
||||
- [関連関数](#)
|
||||
- [API ドキュメント](#)
|
||||
@@ -0,0 +1,104 @@
|
||||
<!-- i18n-source: 07-plugins/pr-review/README.md -->
|
||||
<!-- i18n-source-sha: d17d515 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="../../resources/logos/claude-howto-logo-dark.svg">
|
||||
<img alt="Claude How To" src="../../resources/logos/claude-howto-logo.svg">
|
||||
</picture>
|
||||
|
||||
# PR Review プラグイン
|
||||
|
||||
セキュリティ、テスト、ドキュメントのチェックを伴う完全な PR レビューワークフロー。
|
||||
|
||||
## 機能
|
||||
|
||||
✅ セキュリティ解析
|
||||
✅ テストカバレッジのチェック
|
||||
✅ ドキュメントの検証
|
||||
✅ コード品質の評価
|
||||
✅ パフォーマンス影響の解析
|
||||
|
||||
## インストール
|
||||
|
||||
```bash
|
||||
/plugin install pr-review
|
||||
```
|
||||
|
||||
## 同梱内容
|
||||
|
||||
### スラッシュコマンド
|
||||
- `/review-pr` — 包括的な PR レビュー
|
||||
- `/check-security` — セキュリティ観点のレビュー
|
||||
- `/check-tests` — テストカバレッジ解析
|
||||
|
||||
### サブエージェント
|
||||
- `security-reviewer` — セキュリティ脆弱性の検出
|
||||
- `test-checker` — テストカバレッジ解析
|
||||
- `performance-analyzer` — パフォーマンス影響の評価
|
||||
|
||||
### MCP サーバー
|
||||
- PR データ取得のための GitHub 連携
|
||||
|
||||
### フック
|
||||
- `pre-review.js` — レビュー前検証
|
||||
|
||||
## 使い方
|
||||
|
||||
### 基本的な PR レビュー
|
||||
```
|
||||
/review-pr
|
||||
```
|
||||
|
||||
### セキュリティチェックのみ
|
||||
```
|
||||
/check-security
|
||||
```
|
||||
|
||||
### テストカバレッジチェック
|
||||
```
|
||||
/check-tests
|
||||
```
|
||||
|
||||
## 必要要件
|
||||
|
||||
- Claude Code 1.0 以上
|
||||
- GitHub アクセス
|
||||
- Git リポジトリ
|
||||
|
||||
## 設定
|
||||
|
||||
GitHub トークンを設定する:
|
||||
```bash
|
||||
export GITHUB_TOKEN="your_github_token"
|
||||
```
|
||||
|
||||
## ワークフロー例
|
||||
|
||||
```
|
||||
User: /review-pr
|
||||
|
||||
Claude:
|
||||
1. Runs pre-review hook (validates git repo)
|
||||
2. Fetches PR data via GitHub MCP
|
||||
3. Delegates security review to security-reviewer subagent
|
||||
4. Delegates testing to test-checker subagent
|
||||
5. Delegates performance to performance-analyzer subagent
|
||||
6. Synthesizes all findings
|
||||
7. Provides comprehensive review report
|
||||
|
||||
Result:
|
||||
✅ Security: No critical issues found
|
||||
⚠️ Testing: Coverage is 65%, recommend 80%+
|
||||
✅ Performance: No significant impact
|
||||
📝 Recommendations: Add tests for edge cases
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**最終更新**: 2026 年 4 月 24 日
|
||||
**Claude Code バージョン**: 2.1.119
|
||||
**出典**:
|
||||
- https://code.claude.com/docs/en/plugins
|
||||
- https://github.com/anthropics/claude-code/releases/tag/v2.1.119
|
||||
**対応モデル**: Claude Sonnet 4.6、Claude Opus 4.7、Claude Haiku 4.5
|
||||
@@ -0,0 +1,17 @@
|
||||
<!-- i18n-source: 07-plugins/pr-review/agents/performance-analyzer.md -->
|
||||
<!-- i18n-source-sha: 5caeff2 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: performance-analyzer
|
||||
description: パフォーマンス影響の解析
|
||||
tools: read, grep, bash
|
||||
---
|
||||
|
||||
# Performance Analyzer
|
||||
|
||||
変更によるパフォーマンス影響を評価する:
|
||||
- アルゴリズムの計算量
|
||||
- データベースクエリの効率
|
||||
- メモリ使用量
|
||||
- キャッシュの活用余地
|
||||
@@ -0,0 +1,17 @@
|
||||
<!-- i18n-source: 07-plugins/pr-review/agents/security-reviewer.md -->
|
||||
<!-- i18n-source-sha: 05f0202 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: security-reviewer
|
||||
description: セキュリティに特化したコードレビュー
|
||||
tools: read, grep, bash
|
||||
---
|
||||
|
||||
# Security Reviewer
|
||||
|
||||
セキュリティ脆弱性の検出を専門とする:
|
||||
- 認証 / 認可の問題
|
||||
- データ漏洩
|
||||
- インジェクション攻撃
|
||||
- 安全な設定
|
||||
@@ -0,0 +1,17 @@
|
||||
<!-- i18n-source: 07-plugins/pr-review/agents/test-checker.md -->
|
||||
<!-- i18n-source-sha: 5caeff2 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: test-checker
|
||||
description: テストカバレッジと品質の解析
|
||||
tools: read, bash, grep
|
||||
---
|
||||
|
||||
# Test Checker
|
||||
|
||||
テストカバレッジと品質を解析する:
|
||||
- カバレッジの割合
|
||||
- 欠けているテストケース
|
||||
- テスト品質の評価
|
||||
- エッジケースの特定
|
||||
@@ -0,0 +1,18 @@
|
||||
<!-- i18n-source: 07-plugins/pr-review/commands/check-security.md -->
|
||||
<!-- i18n-source-sha: 5caeff2 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: Security Check
|
||||
description: セキュリティに特化したコードレビューを実行する
|
||||
---
|
||||
|
||||
# Security Check
|
||||
|
||||
コード変更に対してセキュリティ観点の解析を実施する:
|
||||
|
||||
1. 認証 / 認可のチェック
|
||||
2. データ漏洩リスク
|
||||
3. インジェクション脆弱性
|
||||
4. 暗号処理の弱点
|
||||
5. ログに含まれる機微情報
|
||||
@@ -0,0 +1,18 @@
|
||||
<!-- i18n-source: 07-plugins/pr-review/commands/check-tests.md -->
|
||||
<!-- i18n-source-sha: 5caeff2 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: Test Coverage Check
|
||||
description: テストカバレッジと品質を検証する
|
||||
---
|
||||
|
||||
# Test Coverage Check
|
||||
|
||||
テストカバレッジと品質を解析する:
|
||||
|
||||
1. テストカバレッジの割合をチェック
|
||||
2. テストされていないコードパスを特定
|
||||
3. テスト品質をレビュー
|
||||
4. 不足しているテストケースを提案
|
||||
5. エッジケースが網羅されているかを検証
|
||||
@@ -0,0 +1,18 @@
|
||||
<!-- i18n-source: 07-plugins/pr-review/commands/review-pr.md -->
|
||||
<!-- i18n-source-sha: 5caeff2 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
---
|
||||
name: Review PR
|
||||
description: セキュリティチェックとテストチェックを含む包括的な PR レビューを開始する
|
||||
---
|
||||
|
||||
# PR Review
|
||||
|
||||
このコマンドは以下を含むプルリクエストレビューを開始する:
|
||||
|
||||
1. セキュリティ解析
|
||||
2. テストカバレッジの検証
|
||||
3. ドキュメント更新
|
||||
4. コード品質チェック
|
||||
5. パフォーマンス影響の評価
|
||||
@@ -0,0 +1,338 @@
|
||||
<!-- i18n-source: 08-checkpoints/README.md -->
|
||||
<!-- i18n-source-sha: d17d515 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="../../resources/logos/claude-howto-logo-dark.svg">
|
||||
<img alt="Claude How To" src="../../resources/logos/claude-howto-logo.svg">
|
||||
</picture>
|
||||
|
||||
# チェックポイントと巻き戻し
|
||||
|
||||
チェックポイントは、Claude Code セッションの会話状態を保存し、過去の地点へ巻き戻すための機能である。複数のアプローチを比較したい場合、ミスから復旧したい場合、代替案を見比べたい場合に大きな威力を発揮する。
|
||||
|
||||
## 概観
|
||||
|
||||
チェックポイントを使うと、会話状態を保存して過去の地点に戻れるため、安全に試行錯誤と複数アプローチの探索ができる。チェックポイントは会話状態のスナップショットであり、以下を含む:
|
||||
- やり取りされた全メッセージ
|
||||
- 加えられたファイル変更
|
||||
- ツール使用履歴
|
||||
- セッションコンテキスト
|
||||
|
||||
別アプローチの試行、ミスからの復旧、代替案の比較といった場面で威力を発揮する。
|
||||
|
||||
## 主要な概念
|
||||
|
||||
| 概念 | 説明 |
|
||||
|------|------|
|
||||
| **Checkpoint(チェックポイント)** | メッセージ・ファイル・コンテキストを含む会話状態のスナップショット |
|
||||
| **Rewind(巻き戻し)** | 過去のチェックポイントへ戻り、それ以降の変更を破棄する操作 |
|
||||
| **Branch Point(分岐点)** | 複数のアプローチを試すための起点となるチェックポイント |
|
||||
|
||||
## チェックポイントへのアクセス
|
||||
|
||||
チェックポイントへアクセス・管理する主な方法は 2 つある。
|
||||
|
||||
### キーボードショートカット
|
||||
`Esc` キーを 2 回(`Esc` + `Esc`)押すと、チェックポイントインターフェイスが開き、保存済みチェックポイントを参照できる。
|
||||
|
||||
### スラッシュコマンド
|
||||
すばやくアクセスしたい場合は `/rewind` コマンド(エイリアス:`/checkpoint`)を使う:
|
||||
|
||||
```bash
|
||||
# 巻き戻しインターフェイスを開く
|
||||
/rewind
|
||||
|
||||
# またはエイリアスを利用
|
||||
/checkpoint
|
||||
```
|
||||
|
||||
## 巻き戻しオプション
|
||||
|
||||
巻き戻しを実行すると、5 つのオプションメニューが表示される:
|
||||
|
||||
1. **Restore code and conversation** -- 指定したチェックポイントの状態にファイルとメッセージの両方を戻す
|
||||
2. **Restore conversation** -- メッセージのみ巻き戻し、現在のコードはそのまま残す
|
||||
3. **Restore code** -- ファイル変更のみ戻し、会話履歴は完全に維持する
|
||||
4. **Summarize from here** -- そこ以降の会話を AI 生成のサマリに圧縮し、コンテキストウィンドウを解放する。選択点より前のメッセージはそのまま残る。ディスク上のファイルは変更されない。元のメッセージはセッショントランスクリプトに保存される。サマリを特定のトピックに絞るための指示を任意で与えられる。
|
||||
5. **Never mind** -- 操作をキャンセルし、現在の状態に戻る
|
||||
|
||||
> **注意**: 会話を復元または要約した後、選択したメッセージの元のプロンプトが入力欄に復元され、再送信や編集ができる状態になる。
|
||||
|
||||
## 自動チェックポイント
|
||||
|
||||
Claude Code は自動でチェックポイントを作成する:
|
||||
|
||||
- **ユーザーの入力ごと** - 入力のたびに新しいチェックポイントが生成される
|
||||
- **セッション間で保持** - 別セッションを跨いでもチェックポイントは残る
|
||||
- **自動クリーンアップ** - 30 日経過したチェックポイントは自動削除される
|
||||
|
||||
これにより、数分前から数日前まで、会話のどの時点へも巻き戻せる。
|
||||
|
||||
## ユースケース
|
||||
|
||||
| シナリオ | ワークフロー |
|
||||
|----------|-------------|
|
||||
| **アプローチの探索** | 保存 → 案 A を試す → 保存 → 巻き戻し → 案 B を試す → 比較 |
|
||||
| **安全なリファクタリング** | 保存 → リファクタリング → テスト → 失敗なら巻き戻し |
|
||||
| **A/B テスト** | 保存 → 設計 A → 保存 → 巻き戻し → 設計 B → 比較 |
|
||||
| **ミスからの復旧** | 問題に気づく → 直前の良好な状態へ巻き戻し |
|
||||
|
||||
## チェックポイントの利用
|
||||
|
||||
### 一覧表示と巻き戻し
|
||||
|
||||
`Esc` を 2 回押すか `/rewind` を実行するとチェックポイントブラウザが開く。タイムスタンプ付きの一覧から好きなチェックポイントを選ぶと、その状態に巻き戻る。
|
||||
|
||||
### チェックポイントの詳細
|
||||
|
||||
各チェックポイントには以下が表示される:
|
||||
- 作成時のタイムスタンプ
|
||||
- 変更されたファイル
|
||||
- 会話内のメッセージ数
|
||||
- 使用されたツール
|
||||
|
||||
## 実用例
|
||||
|
||||
### 例 1: 別アプローチを試す
|
||||
|
||||
```
|
||||
User: Let's add a caching layer to the API
|
||||
|
||||
Claude: I'll add Redis caching to your API endpoints...
|
||||
[Makes changes at checkpoint A]
|
||||
|
||||
User: Actually, let's try in-memory caching instead
|
||||
|
||||
Claude: I'll rewind to explore a different approach...
|
||||
[User presses Esc+Esc and rewinds to checkpoint A]
|
||||
[Implements in-memory caching at checkpoint B]
|
||||
|
||||
User: Now I can compare both approaches
|
||||
```
|
||||
|
||||
### 例 2: ミスからの復旧
|
||||
|
||||
```
|
||||
User: Refactor the authentication module to use JWT
|
||||
|
||||
Claude: I'll refactor the authentication module...
|
||||
[Makes extensive changes]
|
||||
|
||||
User: Wait, that broke the OAuth integration. Let's go back.
|
||||
|
||||
Claude: I'll help you rewind to before the refactoring...
|
||||
[User presses Esc+Esc and selects the checkpoint before the refactor]
|
||||
|
||||
User: Let's try a more conservative approach this time
|
||||
```
|
||||
|
||||
### 例 3: 安全な試行錯誤
|
||||
|
||||
```
|
||||
User: Let's try rewriting this in a functional style
|
||||
[Creates checkpoint before experiment]
|
||||
|
||||
Claude: [Makes experimental changes]
|
||||
|
||||
User: The tests are failing. Let's rewind.
|
||||
[User presses Esc+Esc and rewinds to the checkpoint]
|
||||
|
||||
Claude: I've rewound the changes. Let's try a different approach.
|
||||
```
|
||||
|
||||
### 例 4: アプローチの分岐
|
||||
|
||||
```
|
||||
User: I want to compare two database designs
|
||||
[Takes note of checkpoint - call it "Start"]
|
||||
|
||||
Claude: I'll create the first design...
|
||||
[Implements Schema A]
|
||||
|
||||
User: Now let me go back and try the second approach
|
||||
[User presses Esc+Esc and rewinds to "Start"]
|
||||
|
||||
Claude: Now I'll implement Schema B...
|
||||
[Implements Schema B]
|
||||
|
||||
User: Great! Now I have both schemas to choose from
|
||||
```
|
||||
|
||||
## チェックポイントの保持期間
|
||||
|
||||
Claude Code はチェックポイントを自動管理する:
|
||||
|
||||
- ユーザー入力ごとにチェックポイントが自動作成される
|
||||
- 古いチェックポイントは最大 30 日まで保持される
|
||||
- ストレージが無限に増えないよう自動でクリーンアップされる
|
||||
|
||||
## ワークフローパターン
|
||||
|
||||
### 探索のための分岐戦略
|
||||
|
||||
複数アプローチを試すとき:
|
||||
|
||||
```
|
||||
1. 初期実装 → チェックポイント A
|
||||
2. アプローチ 1 を試す → チェックポイント B
|
||||
3. チェックポイント A に巻き戻し
|
||||
4. アプローチ 2 を試す → チェックポイント C
|
||||
5. B と C の結果を比較
|
||||
6. 最良案を選んで継続
|
||||
```
|
||||
|
||||
### 安全なリファクタリングのパターン
|
||||
|
||||
大きな変更を加えるとき:
|
||||
|
||||
```
|
||||
1. 現状 → チェックポイント(自動)
|
||||
2. リファクタリング開始
|
||||
3. テスト実行
|
||||
4. 成功 → 続行
|
||||
5. 失敗 → 巻き戻して別案を試す
|
||||
```
|
||||
|
||||
## ベストプラクティス
|
||||
|
||||
チェックポイントは自動作成されるため、状態保存を意識せず作業に集中できる。ただし以下のポイントは押さえておくとよい。
|
||||
|
||||
### チェックポイントを効果的に使う
|
||||
|
||||
✅ **やる:**
|
||||
- 巻き戻し前に利用可能なチェックポイントを確認する
|
||||
- 別方向を試したいときに巻き戻しを使う
|
||||
- 複数アプローチの比較用にチェックポイントを残す
|
||||
- 各巻き戻しオプション(コードと会話の復元、会話のみ復元、コードのみ復元、要約)の挙動を理解する
|
||||
|
||||
❌ **やらない:**
|
||||
- コード保全をチェックポイントだけに頼る
|
||||
- ファイルシステムへの外部変更まで追跡されると思い込む
|
||||
- git コミットの代わりにチェックポイントを使う
|
||||
|
||||
## 設定
|
||||
|
||||
チェックポイントは Claude Code の組み込み機能で、有効化のための設定は不要である。ユーザー入力のたびにチェックポイントが自動生成される。
|
||||
|
||||
チェックポイントに関連する唯一の設定は `cleanupPeriodDays` で、セッションとチェックポイントの保持期間を制御する:
|
||||
|
||||
```json
|
||||
{
|
||||
"cleanupPeriodDays": 30
|
||||
}
|
||||
```
|
||||
|
||||
- `cleanupPeriodDays`: セッション履歴とチェックポイントの保持日数(デフォルト: `30`)
|
||||
|
||||
> **v2.1.117 のアップデート**: `cleanupPeriodDays` がチェックポイントだけでなく、ディスク上の 4 種類のキャッシュの保持期間を統合的に制御するようになった:
|
||||
>
|
||||
> - セッションチェックポイント
|
||||
> - `~/.claude/tasks/` — 永続的なタスクリスト
|
||||
> - `~/.claude/shell-snapshots/` — 取得済みのシェル環境スナップショット
|
||||
> - `~/.claude/backups/` — 設定ファイル / CLAUDE.md の循環バックアップ
|
||||
>
|
||||
> 1 つの設定で 4 つのディレクトリが同じ日数で一律に整理される。
|
||||
|
||||
## 制限事項
|
||||
|
||||
チェックポイントには次の制限がある:
|
||||
|
||||
- **bash コマンドによる変更は追跡されない** - `rm`、`mv`、`cp` などのファイルシステム操作はチェックポイントに含まれない
|
||||
- **外部の変更は追跡されない** - エディタやターミナルなど Claude Code の外で行った変更は捕捉されない
|
||||
- **バージョン管理の代わりにはならない** - 永続的で監査可能な変更には git を使う
|
||||
|
||||
## トラブルシューティング
|
||||
|
||||
### チェックポイントが見つからない
|
||||
|
||||
**問題**: 期待したチェックポイントが存在しない
|
||||
|
||||
**対処法**:
|
||||
- チェックポイントが消去されていないか確認する
|
||||
- ディスク容量を確認する
|
||||
- `cleanupPeriodDays` を十分大きくする(デフォルト: 30 日)
|
||||
|
||||
### 巻き戻しに失敗する
|
||||
|
||||
**問題**: チェックポイントへ巻き戻せない
|
||||
|
||||
**対処法**:
|
||||
- 未コミットの変更が衝突していないか確認する
|
||||
- チェックポイントが破損していないか確認する
|
||||
- 別のチェックポイントへ戻すことを試す
|
||||
|
||||
## Git との連携
|
||||
|
||||
チェックポイントは git を補完するが、置き換えるものではない:
|
||||
|
||||
| 項目 | Git | チェックポイント |
|
||||
|------|-----|----------------|
|
||||
| 範囲 | ファイルシステム | 会話 + ファイル |
|
||||
| 永続性 | 永続的 | セッション単位 |
|
||||
| 粒度 | コミット単位 | 任意の地点 |
|
||||
| 速度 | 比較的遅い | 即時 |
|
||||
| 共有 | 可 | 限定的 |
|
||||
|
||||
両者を組み合わせて使う:
|
||||
1. 試行錯誤にはチェックポイントを使う
|
||||
2. 確定した変更には git コミットを使う
|
||||
3. git 操作の前にチェックポイントを作成する
|
||||
4. 良好なチェックポイントの状態を git にコミットする
|
||||
|
||||
## クイックスタートガイド
|
||||
|
||||
### 基本ワークフロー
|
||||
|
||||
1. **普通に作業する** - Claude Code が自動でチェックポイントを作成
|
||||
2. **戻りたくなったら** - `Esc` を 2 回押すか `/rewind` を使う
|
||||
3. **チェックポイントを選ぶ** - リストから巻き戻し先を選択
|
||||
4. **復元対象を選ぶ** - コードと会話、会話のみ、コードのみ、要約、キャンセルから選択
|
||||
5. **作業を続ける** - 選んだ時点に戻った状態で再開
|
||||
|
||||
### キーボードショートカット
|
||||
|
||||
- **`Esc` + `Esc`** - チェックポイントブラウザを開く
|
||||
- **`/rewind`** - チェックポイントへの別アクセス手段
|
||||
- **`/checkpoint`** - `/rewind` のエイリアス
|
||||
|
||||
## いつ巻き戻すかを知る:コンテキスト監視
|
||||
|
||||
チェックポイントで戻ることはできるが、*いつ*戻るべきかをどう判断するか。会話が長くなるにつれて Claude のコンテキストウィンドウは消費され、モデル品質は静かに劣化する。気づかないうちに半盲状態のモデルからコードを受け取っているかもしれない。
|
||||
|
||||
**[cc-context-stats](https://github.com/luongnv89/cc-context-stats)** は、Claude Code のステータスバーにリアルタイムの **コンテキストゾーン** を追加してこの問題を解決する。コンテキストウィンドウのどの位置にいるかを追跡し、**Plan**(緑、計画とコーディングが安全)から **Code**(黄、新しい計画は始めない)、**Dump**(橙、まとめて巻き戻す)まで段階表示する。ゾーンが切り替わったら、劣化した出力で押し切らずチェックポイントから新しく始めるべきタイミングだとわかる。
|
||||
|
||||
## 関連概念
|
||||
|
||||
- **[高度な機能](../09-advanced-features/)** - プランニングモードやその他の高度な機能
|
||||
- **[メモリ管理](../02-memory/)** - 会話履歴とコンテキストの管理
|
||||
- **[スラッシュコマンド](../01-slash-commands/)** - ユーザーが起動するショートカット
|
||||
- **[フック](../06-hooks/)** - イベント駆動の自動化
|
||||
- **[プラグイン](../07-plugins/)** - バンドルされた拡張パッケージ
|
||||
|
||||
## 追加リソース
|
||||
|
||||
- [チェックポイント公式ドキュメント](https://code.claude.com/docs/en/checkpointing)
|
||||
- [高度な機能ガイド](../09-advanced-features/) - 拡張思考などの機能
|
||||
|
||||
## まとめ
|
||||
|
||||
チェックポイントは Claude Code の自動機能で、作業を失う恐れなく安全にさまざまなアプローチを試せる。ユーザー入力のたびに新しいチェックポイントが作られるため、セッションのどの時点へも戻れる。
|
||||
|
||||
主な利点:
|
||||
- 複数アプローチを恐れずに試せる
|
||||
- ミスからすばやく復旧できる
|
||||
- 異なる解決案を並べて比較できる
|
||||
- バージョン管理と安全に組み合わせられる
|
||||
|
||||
注意:チェックポイントは git の代わりにはならない。試行錯誤にはチェックポイント、永続的なコード変更には git を使う。
|
||||
|
||||
---
|
||||
|
||||
**最終更新**: 2026 年 4 月 24 日
|
||||
**Claude Code バージョン**: 2.1.119
|
||||
**出典**:
|
||||
- https://code.claude.com/docs/en/checkpointing
|
||||
- https://code.claude.com/docs/en/settings
|
||||
- https://github.com/anthropics/claude-code/releases/tag/v2.1.117
|
||||
**対応モデル**: Claude Sonnet 4.6、Claude Opus 4.7、Claude Haiku 4.5
|
||||
@@ -0,0 +1,346 @@
|
||||
<!-- i18n-source: 08-checkpoints/checkpoint-examples.md -->
|
||||
<!-- i18n-source-sha: 7f2e773 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
# チェックポイントの例
|
||||
|
||||
Claude Code でチェックポイントを効果的に使うための実例集。
|
||||
|
||||
注意:チェックポイントはユーザー入力ごとに自動作成される。手動保存は不要である。巻き戻すには `Esc` を 2 回(`Esc+Esc`)押すか `/rewind` を使ってチェックポイントブラウザを開く。
|
||||
|
||||
## 例 1: データベースマイグレーション
|
||||
|
||||
### シナリオ
|
||||
MySQL から PostgreSQL へ移行したいが、直接マイグレーションと段階的なデュアルライト方式の両方を試したい。
|
||||
|
||||
### ワークフロー
|
||||
|
||||
```
|
||||
User: Let's implement a direct migration from MySQL to PostgreSQL
|
||||
[Checkpoint A created automatically]
|
||||
|
||||
Claude: I'll implement the direct migration...
|
||||
[Changes database driver, updates queries, modifies schema]
|
||||
|
||||
User: Run the tests
|
||||
[Checkpoint B created automatically]
|
||||
|
||||
Claude: Running tests...
|
||||
❌ 15 tests failing - connection pool issues
|
||||
|
||||
User: This approach has issues. Let's try the dual-write pattern instead.
|
||||
[User presses Esc+Esc, selects Checkpoint A, chooses "Restore code and conversation"]
|
||||
|
||||
User: Now implement a dual-write pattern where we write to both databases
|
||||
|
||||
Claude: I'll implement dual-write migration...
|
||||
[Implements dual-write layer, gradual migration strategy]
|
||||
|
||||
User: Run the tests
|
||||
|
||||
Claude: Running tests...
|
||||
✅ All tests passing
|
||||
|
||||
User: The dual-write approach is clearly safer. Let's commit this.
|
||||
```
|
||||
|
||||
## 例 2: パフォーマンス最適化
|
||||
|
||||
### シナリオ
|
||||
複数のパフォーマンス最適化戦略を試す。
|
||||
|
||||
### ワークフロー
|
||||
|
||||
```
|
||||
User: Let's optimize the API response time. Current: 450ms
|
||||
[Checkpoint "Baseline" created automatically]
|
||||
|
||||
Claude: I'll add database query caching...
|
||||
[Implements Redis caching]
|
||||
|
||||
User: Run performance tests
|
||||
|
||||
Claude: Results: 280ms average response time (38% improvement)
|
||||
|
||||
User: Let me try a different approach.
|
||||
[User presses Esc+Esc, selects "Baseline" checkpoint, chooses "Restore code and conversation"]
|
||||
|
||||
User: Try database query optimization instead
|
||||
|
||||
Claude: I'll optimize database queries...
|
||||
[Adds indexes, optimizes N+1 queries]
|
||||
|
||||
User: Run performance tests
|
||||
|
||||
Claude: Results: 180ms average response time (60% improvement)
|
||||
|
||||
User: Let me also try a third approach.
|
||||
[User presses Esc+Esc, selects "Baseline" checkpoint, chooses "Restore code and conversation"]
|
||||
|
||||
User: Try response compression and CDN
|
||||
|
||||
Claude: I'll add compression and CDN...
|
||||
[Implements gzip, sets up CDN]
|
||||
|
||||
User: Run performance tests
|
||||
|
||||
Claude: Results: 320ms average response time (29% improvement)
|
||||
|
||||
User: Query optimization was the best. Let me go back and combine it with caching.
|
||||
[User presses Esc+Esc, selects the checkpoint after query optimization, chooses "Restore code and conversation"]
|
||||
|
||||
User: Now add Redis caching on top of these optimized queries
|
||||
|
||||
Claude: [Adds Redis caching on top of optimized queries]
|
||||
|
||||
User: Run performance tests
|
||||
|
||||
Claude: Results: 95ms average response time (79% improvement) 🎉
|
||||
|
||||
User: Perfect! This is the winner. Let's commit this.
|
||||
```
|
||||
|
||||
## 例 3: UI/UX のイテレーション
|
||||
|
||||
### シナリオ
|
||||
ダッシュボードに複数のレイアウト案を試す。
|
||||
|
||||
### ワークフロー
|
||||
|
||||
```
|
||||
User: Let's redesign the dashboard with a sidebar layout
|
||||
[Checkpoint "Start" created automatically]
|
||||
|
||||
Claude: [Implements sidebar layout]
|
||||
|
||||
User: Show me a screenshot
|
||||
|
||||
Claude: [Shows screenshot]
|
||||
|
||||
User: The sidebar feels cramped. Let's try a top navigation instead.
|
||||
[User presses Esc+Esc, selects "Start" checkpoint, chooses "Restore code and conversation"]
|
||||
|
||||
User: Try a top navigation layout
|
||||
|
||||
Claude: [Implements top navigation]
|
||||
|
||||
User: Show me a screenshot
|
||||
|
||||
Claude: [Shows screenshot]
|
||||
|
||||
User: Better, but let's try a card-based grid layout
|
||||
[User presses Esc+Esc, selects "Start" checkpoint, chooses "Restore code and conversation"]
|
||||
|
||||
User: Try a card-based grid layout
|
||||
|
||||
Claude: [Implements card grid]
|
||||
|
||||
User: Show me a screenshot
|
||||
|
||||
Claude: [Shows screenshot]
|
||||
|
||||
User: This is great! But can we combine the top nav with the card grid?
|
||||
[User presses Esc+Esc, selects the checkpoint after the card grid, chooses "Restore code and conversation"]
|
||||
|
||||
User: Add top navigation to the card grid layout
|
||||
|
||||
Claude: [Adds top navigation to card grid]
|
||||
|
||||
User: Perfect! This is the final design.
|
||||
```
|
||||
|
||||
## 例 4: デバッグセッション
|
||||
|
||||
### シナリオ
|
||||
複数の仮説を立てながら厄介なバグを追う。
|
||||
|
||||
### ワークフロー
|
||||
|
||||
```
|
||||
User: There's a memory leak in the application
|
||||
[Checkpoint "Before debugging" created automatically]
|
||||
|
||||
Claude: Let me investigate...
|
||||
[Analyzes code]
|
||||
|
||||
User: I think it's in the event listeners. Let's fix those.
|
||||
|
||||
Claude: [Fixes event listener cleanup]
|
||||
|
||||
User: Run memory profiler
|
||||
|
||||
Claude: Still leaking memory - event listeners weren't the issue
|
||||
|
||||
User: Let me go back and try a different hypothesis.
|
||||
[User presses Esc+Esc, selects "Before debugging" checkpoint, chooses "Restore code and conversation"]
|
||||
|
||||
User: Maybe it's the database connections?
|
||||
|
||||
Claude: [Implements connection pooling fixes]
|
||||
|
||||
User: Run memory profiler
|
||||
|
||||
Claude: Still leaking - not the connections either
|
||||
|
||||
User: Let me go back and try another angle.
|
||||
[User presses Esc+Esc, selects "Before debugging" checkpoint, chooses "Restore code and conversation"]
|
||||
|
||||
User: Let's check for circular references
|
||||
|
||||
Claude: [Finds and fixes circular references in cache]
|
||||
|
||||
User: Run memory profiler
|
||||
|
||||
Claude: ✅ Memory leak fixed! The circular references in the caching layer were the culprit.
|
||||
|
||||
User: Excellent! Let's commit this fix.
|
||||
```
|
||||
|
||||
## 例 5: API 設計の進化
|
||||
|
||||
### シナリオ
|
||||
複数回のイテレーションで REST API を設計する。
|
||||
|
||||
### ワークフロー
|
||||
|
||||
```
|
||||
User: Create a REST API for our blog platform
|
||||
[Checkpoint "Before API design" created automatically]
|
||||
|
||||
Claude: [Creates basic CRUD API]
|
||||
|
||||
User: This is too simple. Let's add pagination and filtering
|
||||
|
||||
Claude: [Adds pagination and filtering]
|
||||
|
||||
User: We need better resource relationships
|
||||
|
||||
Claude: [Implements HATEOAS links]
|
||||
|
||||
User: Actually, let's try GraphQL instead of REST
|
||||
[User presses Esc+Esc, selects "Before API design" checkpoint, chooses "Restore code and conversation"]
|
||||
|
||||
User: Implement a GraphQL API for our blog platform instead
|
||||
|
||||
Claude: [Implements GraphQL API]
|
||||
|
||||
User: I think REST is better for our use case.
|
||||
[User presses Esc+Esc, selects the checkpoint after HATEOAS, chooses "Restore code and conversation"]
|
||||
|
||||
User: Let's finalize the REST approach.
|
||||
```
|
||||
|
||||
## 例 6: 設定管理
|
||||
|
||||
### シナリオ
|
||||
複数の設定方式を試す。
|
||||
|
||||
### ワークフロー
|
||||
|
||||
```
|
||||
User: Move configuration to environment variables
|
||||
[Checkpoint "Original config" created automatically]
|
||||
|
||||
Claude: [Implements env var configuration]
|
||||
|
||||
User: Test in development
|
||||
|
||||
Claude: Works locally but deployment issues in production
|
||||
|
||||
User: Let me try a different approach.
|
||||
[User presses Esc+Esc, selects "Original config" checkpoint, chooses "Restore code and conversation"]
|
||||
|
||||
User: Try a config file approach with validation
|
||||
|
||||
Claude: [Implements YAML config with JSON schema validation]
|
||||
|
||||
User: Test in development
|
||||
|
||||
Claude: ✅ Works well, good validation errors
|
||||
|
||||
User: Can we also support env vars for sensitive values?
|
||||
|
||||
Claude: [Adds env var override for secrets]
|
||||
|
||||
User: Test deployment
|
||||
|
||||
Claude: ✅ All environments working correctly
|
||||
|
||||
User: Perfect! This is production-ready.
|
||||
```
|
||||
|
||||
## 例 7: テスト戦略
|
||||
|
||||
### シナリオ
|
||||
包括的なテストを実装する。
|
||||
|
||||
### ワークフロー
|
||||
|
||||
```
|
||||
User: Add unit tests for the auth module
|
||||
[Checkpoint created automatically]
|
||||
|
||||
Claude: [Adds Jest unit tests]
|
||||
|
||||
User: Run tests
|
||||
|
||||
Claude: 45 tests passing, 78% coverage
|
||||
|
||||
User: Add integration tests too
|
||||
|
||||
Claude: [Adds integration tests]
|
||||
|
||||
User: Run tests
|
||||
|
||||
Claude: 89 tests passing, 92% coverage, but tests are slow (3 minutes)
|
||||
|
||||
User: The tests are too slow. Let's optimize.
|
||||
|
||||
Claude: [Optimizes test setup, adds parallel execution]
|
||||
|
||||
User: Run tests
|
||||
|
||||
Claude: 89 tests passing, 92% coverage, 35 seconds ✅
|
||||
|
||||
User: Great! Now add E2E tests for critical paths
|
||||
|
||||
Claude: [Adds Playwright E2E tests]
|
||||
|
||||
User: Run all tests
|
||||
|
||||
Claude: 112 tests passing, 94% coverage, 2 minutes
|
||||
|
||||
User: Perfect balance of coverage and speed!
|
||||
```
|
||||
|
||||
## 例 8: チェックポイントから要約する
|
||||
|
||||
### シナリオ
|
||||
長いデバッグセッションの後、コンテキストを保ったまま会話を圧縮したい。
|
||||
|
||||
### ワークフロー
|
||||
|
||||
```
|
||||
User: [After 20+ messages of debugging and exploration]
|
||||
|
||||
[User presses Esc+Esc, selects an early checkpoint, chooses "Summarize from here"]
|
||||
[Optionally provides instructions: "Focus on what we tried and what worked"]
|
||||
|
||||
Claude: [Generates a summary of the conversation from that point forward]
|
||||
[Original messages are preserved in the transcript]
|
||||
[The summary replaces the visible conversation, reducing context window usage]
|
||||
|
||||
User: Now let's continue with the approach that worked.
|
||||
```
|
||||
|
||||
## 重要なポイント
|
||||
|
||||
1. **チェックポイントは自動**: ユーザー入力ごとに作成されるため手動保存は不要
|
||||
2. **`Esc+Esc` または `/rewind` を使う**: チェックポイントブラウザを開く 2 つの方法
|
||||
3. **適切な復元オプションを選ぶ**: コードのみ、会話のみ、両方、要約のうち目的に合うものを選択
|
||||
4. **試行錯誤を恐れない**: チェックポイントがあるため大胆な変更を安心して試せる
|
||||
5. **git と組み合わせる**: 試行錯誤にはチェックポイント、確定したものには git を使う
|
||||
6. **長いセッションは要約する**: 「Summarize from here」で会話量を扱いやすく保つ
|
||||
|
||||
---
|
||||
**最終更新**: 2026 年 4 月 9 日
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,540 @@
|
||||
<!-- i18n-source: 09-advanced-features/planning-mode-examples.md -->
|
||||
<!-- i18n-source-sha: 7f2e773 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
# プランニングモードの例
|
||||
|
||||
Claude Code でプランニングモードを効果的に使う実例集。
|
||||
|
||||
## 例 1: REST API の構築
|
||||
|
||||
### プランニングモードを使わない場合
|
||||
|
||||
```
|
||||
User: Build a REST API for a blog
|
||||
|
||||
Claude: I'll create the API...
|
||||
[Starts coding immediately, may miss requirements]
|
||||
```
|
||||
|
||||
### プランニングモードを使う場合
|
||||
|
||||
```
|
||||
User: /plan Build a REST API for a blog
|
||||
|
||||
Claude: Let me create a comprehensive plan for the blog API.
|
||||
|
||||
## Blog REST API Implementation Plan
|
||||
|
||||
### Phase 1: Project Setup (15 min)
|
||||
1. Initialize Node.js project with Express
|
||||
2. Set up TypeScript configuration
|
||||
3. Install dependencies (express, pg, jwt, joi)
|
||||
4. Configure environment variables
|
||||
5. Set up project structure
|
||||
|
||||
### Phase 2: Database Layer (30 min)
|
||||
6. Design database schema
|
||||
- users table (id, email, password_hash, created_at)
|
||||
- posts table (id, user_id, title, content, published, created_at, updated_at)
|
||||
- comments table (id, post_id, user_id, content, created_at)
|
||||
7. Create migration files
|
||||
8. Set up database connection pool
|
||||
9. Implement database models
|
||||
|
||||
### Phase 3: Authentication (45 min)
|
||||
10. Implement user registration endpoint
|
||||
11. Implement login endpoint with JWT
|
||||
12. Create authentication middleware
|
||||
13. Add password hashing with bcrypt
|
||||
14. Implement token refresh logic
|
||||
|
||||
### Phase 4: Posts API (40 min)
|
||||
15. GET /api/posts - List all published posts (with pagination)
|
||||
16. GET /api/posts/:id - Get single post
|
||||
17. POST /api/posts - Create new post (auth required)
|
||||
18. PUT /api/posts/:id - Update post (auth required, ownership check)
|
||||
19. DELETE /api/posts/:id - Delete post (auth required, ownership check)
|
||||
20. GET /api/users/:id/posts - Get user's posts
|
||||
|
||||
### Phase 5: Comments API (30 min)
|
||||
21. GET /api/posts/:id/comments - Get post comments
|
||||
22. POST /api/posts/:id/comments - Add comment (auth required)
|
||||
23. DELETE /api/comments/:id - Delete comment (auth required, ownership check)
|
||||
|
||||
### Phase 6: Validation & Error Handling (30 min)
|
||||
24. Add request validation with Joi
|
||||
25. Implement global error handler
|
||||
26. Add input sanitization
|
||||
27. Implement rate limiting
|
||||
|
||||
### Phase 7: Testing (60 min)
|
||||
28. Write unit tests for models
|
||||
29. Write integration tests for auth endpoints
|
||||
30. Write integration tests for posts endpoints
|
||||
31. Write integration tests for comments endpoints
|
||||
32. Achieve 80%+ code coverage
|
||||
|
||||
### Phase 8: Documentation & Deployment (30 min)
|
||||
33. Generate API documentation with Swagger
|
||||
34. Create README with setup instructions
|
||||
35. Add Docker configuration
|
||||
36. Set up CI/CD pipeline
|
||||
|
||||
**Estimated Time**: 4.5 hours
|
||||
**Files to Create**: ~25
|
||||
**Key Technologies**: Express, PostgreSQL, JWT, TypeScript
|
||||
|
||||
**API Endpoints Summary**:
|
||||
- Authentication: 2 endpoints
|
||||
- Posts: 6 endpoints
|
||||
- Comments: 3 endpoints
|
||||
- Total: 11 endpoints
|
||||
|
||||
Ready to proceed? (yes/no/modify)
|
||||
|
||||
User: yes
|
||||
|
||||
Claude: Starting Phase 1: Project Setup...
|
||||
[Implements each phase systematically]
|
||||
```
|
||||
|
||||
## 例 2: データベースマイグレーション
|
||||
|
||||
### プランニングモードを使う場合
|
||||
|
||||
```
|
||||
User: /plan Migrate from MongoDB to PostgreSQL
|
||||
|
||||
Claude: This is a complex migration. Let me create a detailed plan.
|
||||
|
||||
## MongoDB to PostgreSQL Migration Plan
|
||||
|
||||
### Phase 1: Analysis & Preparation (Day 1)
|
||||
1. Analyze current MongoDB schema
|
||||
2. Identify data relationships and constraints
|
||||
3. Document current data volume and growth rate
|
||||
4. Design equivalent PostgreSQL schema
|
||||
5. Plan data type mappings
|
||||
6. Identify potential migration challenges
|
||||
|
||||
### Phase 2: PostgreSQL Setup (Day 1)
|
||||
7. Set up PostgreSQL database
|
||||
8. Create schema with tables, indexes, constraints
|
||||
9. Set up connection pooling
|
||||
10. Configure backup strategy
|
||||
|
||||
### Phase 3: Dual-Write Implementation (Day 2-3)
|
||||
11. Create database abstraction layer
|
||||
12. Implement dual-write to both databases
|
||||
13. Add data consistency checks
|
||||
14. Deploy dual-write to staging
|
||||
15. Monitor for issues
|
||||
|
||||
### Phase 4: Data Migration (Day 4)
|
||||
16. Create data export scripts for MongoDB
|
||||
17. Create data import scripts for PostgreSQL
|
||||
18. Implement data transformation logic
|
||||
19. Run initial migration on copy of production data
|
||||
20. Validate migrated data integrity
|
||||
|
||||
### Phase 5: Gradual Cutover (Day 5-7)
|
||||
21. Enable dual-write in production
|
||||
22. Migrate historical data in batches
|
||||
23. Continuously validate data consistency
|
||||
24. Monitor both databases
|
||||
25. Fix any data synchronization issues
|
||||
|
||||
### Phase 6: PostgreSQL Primary (Day 8)
|
||||
26. Switch read operations to PostgreSQL
|
||||
27. Monitor query performance
|
||||
28. Optimize slow queries
|
||||
29. Continue dual-write for safety
|
||||
|
||||
### Phase 7: MongoDB Retirement (Day 9-10)
|
||||
30. Stop writing to MongoDB
|
||||
31. Keep MongoDB as backup for 2 weeks
|
||||
32. Remove MongoDB dependencies from code
|
||||
33. Archive MongoDB data
|
||||
34. Decommission MongoDB instance
|
||||
|
||||
**Estimated Time**: 10 days
|
||||
**Risk Level**: High
|
||||
**Rollback Strategy**: Keep MongoDB running with dual-write
|
||||
**Success Criteria**:
|
||||
- Zero data loss
|
||||
- <5% performance regression
|
||||
- All tests passing
|
||||
|
||||
**Key Risks**:
|
||||
1. Data inconsistency during migration
|
||||
2. Query performance degradation
|
||||
3. Application downtime
|
||||
4. Data loss
|
||||
|
||||
**Mitigation**:
|
||||
- Dual-write pattern for safety
|
||||
- Gradual cutover
|
||||
- Continuous monitoring
|
||||
- Quick rollback capability
|
||||
|
||||
Proceed with this plan? (yes/no/modify)
|
||||
|
||||
User: Modify - let's add a rollback plan for each phase
|
||||
|
||||
Claude: Updated plan with rollback procedures for each phase...
|
||||
```
|
||||
|
||||
## 例 3: フロントエンドのリファクタリング
|
||||
|
||||
```
|
||||
User: /plan Refactor our React app from class components to hooks
|
||||
|
||||
Claude: I'll create a systematic refactoring plan.
|
||||
|
||||
## React Class to Hooks Migration Plan
|
||||
|
||||
### Phase 1: Preparation & Analysis (2 hours)
|
||||
1. Audit all class components (find all .jsx/.tsx files)
|
||||
2. Categorize by complexity:
|
||||
- Simple (state only): ~15 components
|
||||
- Medium (lifecycle methods): ~23 components
|
||||
- Complex (multiple lifecycle, refs): ~8 components
|
||||
3. Identify third-party libraries that need updates
|
||||
4. Create component dependency graph
|
||||
5. Plan migration order (leaf nodes first)
|
||||
|
||||
### Phase 2: Setup & Tooling (1 hour)
|
||||
6. Update React to v18+
|
||||
7. Set up ESLint rules for hooks
|
||||
8. Create conversion templates
|
||||
9. Set up automated tests
|
||||
10. Create checkpoint before starting
|
||||
|
||||
### Phase 3: Migrate Simple Components (4 hours)
|
||||
11. Convert simple stateful components (15 components)
|
||||
12. Replace this.state with useState
|
||||
13. Replace this.setState with state setters
|
||||
14. Test each component after conversion
|
||||
15. Update tests
|
||||
|
||||
### Phase 4: Migrate Medium Components (8 hours)
|
||||
16. Convert components with lifecycle methods (23 components)
|
||||
17. Replace componentDidMount with useEffect
|
||||
18. Replace componentDidUpdate with useEffect
|
||||
19. Replace componentWillUnmount with useEffect cleanup
|
||||
20. Test thoroughly
|
||||
|
||||
### Phase 5: Migrate Complex Components (12 hours)
|
||||
21. Convert complex components (8 components)
|
||||
22. Replace refs with useRef
|
||||
23. Extract custom hooks for shared logic
|
||||
24. Handle edge cases (multiple useEffect)
|
||||
25. Extensive testing
|
||||
|
||||
### Phase 6: Shared Logic Extraction (6 hours)
|
||||
26. Identify duplicated logic across components
|
||||
27. Create custom hooks:
|
||||
- useAuth
|
||||
- useFetch
|
||||
- useLocalStorage
|
||||
- useDebounce
|
||||
28. Refactor components to use custom hooks
|
||||
29. Test custom hooks independently
|
||||
|
||||
### Phase 7: Performance Optimization (4 hours)
|
||||
30. Add React.memo where needed
|
||||
31. Optimize with useCallback
|
||||
32. Optimize with useMemo
|
||||
33. Profile and fix performance regressions
|
||||
|
||||
### Phase 8: Cleanup & Documentation (2 hours)
|
||||
34. Remove unused class component utilities
|
||||
35. Update documentation
|
||||
36. Update coding guidelines
|
||||
37. Create migration guide for team
|
||||
|
||||
**Estimated Time**: 5 days (39 hours)
|
||||
**Files to Modify**: 46 components
|
||||
**Risk Level**: Medium
|
||||
|
||||
**Migration Order**:
|
||||
1. Leaf components (no dependencies)
|
||||
2. Mid-level components
|
||||
3. Top-level container components
|
||||
4. App.jsx (last)
|
||||
|
||||
**Testing Strategy**:
|
||||
- Unit tests for each component
|
||||
- Integration tests for user flows
|
||||
- Visual regression tests
|
||||
- Performance benchmarks
|
||||
|
||||
**Success Metrics**:
|
||||
- All tests passing
|
||||
- No visual regressions
|
||||
- Performance maintained or improved
|
||||
- Bundle size not significantly increased
|
||||
|
||||
Proceed? (yes/no/modify)
|
||||
```
|
||||
|
||||
## 例 4: セキュリティ実装
|
||||
|
||||
```
|
||||
User: /plan Implement comprehensive security for our web app
|
||||
|
||||
Claude: Let me create a thorough security implementation plan.
|
||||
|
||||
## Web Application Security Implementation Plan
|
||||
|
||||
### Phase 1: Security Audit (Day 1)
|
||||
1. Run automated security scanners (npm audit, Snyk)
|
||||
2. Review dependencies for vulnerabilities
|
||||
3. Check OWASP Top 10 compliance
|
||||
4. Audit authentication flows
|
||||
5. Review data handling practices
|
||||
6. Document current security gaps
|
||||
|
||||
### Phase 2: Authentication Hardening (Day 2-3)
|
||||
7. Implement strong password requirements
|
||||
8. Add password strength meter
|
||||
9. Implement rate limiting on login
|
||||
10. Add account lockout after failed attempts
|
||||
11. Implement 2FA (TOTP)
|
||||
12. Add session management improvements
|
||||
13. Implement secure password reset flow
|
||||
|
||||
### Phase 3: Authorization & Access Control (Day 3-4)
|
||||
14. Implement RBAC (Role-Based Access Control)
|
||||
15. Add permission checks on all endpoints
|
||||
16. Implement principle of least privilege
|
||||
17. Add audit logging for sensitive operations
|
||||
18. Implement resource-level permissions
|
||||
|
||||
### Phase 4: Data Protection (Day 4-5)
|
||||
19. Implement encryption at rest (sensitive fields)
|
||||
20. Ensure TLS/SSL for all communications
|
||||
21. Implement secure session storage
|
||||
22. Add PII data masking in logs
|
||||
23. Implement data retention policies
|
||||
24. Add secure file upload handling
|
||||
|
||||
### Phase 5: Input Validation & Sanitization (Day 5-6)
|
||||
25. Implement input validation on all endpoints
|
||||
26. Add XSS protection (Content Security Policy)
|
||||
27. Implement SQL injection prevention (parameterized queries)
|
||||
28. Add CSRF protection
|
||||
29. Implement request size limits
|
||||
30. Add file upload type validation
|
||||
|
||||
### Phase 6: Security Headers & Configuration (Day 6)
|
||||
31. Add security headers:
|
||||
- Strict-Transport-Security
|
||||
- X-Content-Type-Options
|
||||
- X-Frame-Options
|
||||
- X-XSS-Protection
|
||||
- Content-Security-Policy
|
||||
32. Configure CORS properly
|
||||
33. Disable unnecessary HTTP methods
|
||||
34. Remove server version headers
|
||||
|
||||
### Phase 7: Monitoring & Logging (Day 7)
|
||||
35. Implement security event logging
|
||||
36. Add anomaly detection
|
||||
37. Set up intrusion detection
|
||||
38. Implement real-time alerting
|
||||
39. Create security dashboard
|
||||
|
||||
### Phase 8: Testing & Documentation (Day 8-9)
|
||||
40. Perform penetration testing
|
||||
41. Run security scanners
|
||||
42. Test all security features
|
||||
43. Create security documentation
|
||||
44. Train team on security practices
|
||||
45. Create incident response plan
|
||||
|
||||
### Phase 9: Compliance & Policies (Day 10)
|
||||
46. GDPR compliance check
|
||||
47. Create privacy policy
|
||||
48. Implement data subject rights
|
||||
49. Add cookie consent
|
||||
50. Create security policies documentation
|
||||
|
||||
**Estimated Time**: 10 days
|
||||
**Risk Level**: Critical
|
||||
**Priority**: High
|
||||
|
||||
**Security Improvements Summary**:
|
||||
- Authentication: 7 enhancements
|
||||
- Authorization: 5 enhancements
|
||||
- Data Protection: 6 enhancements
|
||||
- Input Validation: 6 enhancements
|
||||
- Infrastructure: 9 enhancements
|
||||
- Monitoring: 5 enhancements
|
||||
|
||||
**Compliance**: OWASP Top 10, GDPR
|
||||
|
||||
**Success Criteria**:
|
||||
- Zero critical vulnerabilities
|
||||
- All OWASP Top 10 mitigated
|
||||
- Security score >90/100
|
||||
- All pen test issues resolved
|
||||
|
||||
Proceed? (yes/no/modify)
|
||||
```
|
||||
|
||||
## 例 5: パフォーマンス最適化
|
||||
|
||||
```
|
||||
User: /plan Optimize our slow e-commerce website
|
||||
|
||||
Claude: Let me create a comprehensive performance optimization plan.
|
||||
|
||||
## E-commerce Performance Optimization Plan
|
||||
|
||||
### Phase 1: Performance Audit (4 hours)
|
||||
1. Run Lighthouse audit
|
||||
2. Analyze Chrome DevTools performance profile
|
||||
3. Measure Core Web Vitals:
|
||||
- LCP (Largest Contentful Paint)
|
||||
- FID (First Input Delay)
|
||||
- CLS (Cumulative Layout Shift)
|
||||
4. Identify performance bottlenecks
|
||||
5. Create baseline performance metrics
|
||||
|
||||
**Current Metrics**:
|
||||
- LCP: 4.2s (target: <2.5s)
|
||||
- FID: 280ms (target: <100ms)
|
||||
- CLS: 0.25 (target: <0.1)
|
||||
- Page Load: 8.3s (target: <3s)
|
||||
|
||||
### Phase 2: Image Optimization (6 hours)
|
||||
6. Convert images to WebP format
|
||||
7. Implement responsive images
|
||||
8. Add lazy loading for images
|
||||
9. Optimize image sizes (compression)
|
||||
10. Implement CDN for images
|
||||
11. Add image placeholders
|
||||
|
||||
**Expected Impact**: -40% load time
|
||||
|
||||
### Phase 3: Code Splitting & Lazy Loading (8 hours)
|
||||
12. Implement route-based code splitting
|
||||
13. Lazy load non-critical components
|
||||
14. Split vendor bundles
|
||||
15. Optimize chunk sizes
|
||||
16. Implement dynamic imports
|
||||
17. Add preloading for critical resources
|
||||
|
||||
**Expected Impact**: -30% initial bundle size
|
||||
|
||||
### Phase 4: Caching Strategy (6 hours)
|
||||
18. Implement browser caching (Cache-Control)
|
||||
19. Add service worker for offline support
|
||||
20. Implement API response caching
|
||||
21. Add Redis cache for database queries
|
||||
22. Implement stale-while-revalidate
|
||||
23. Configure CDN caching
|
||||
|
||||
**Expected Impact**: -50% API response time
|
||||
|
||||
### Phase 5: Database Optimization (8 hours)
|
||||
24. Add database indexes
|
||||
25. Optimize slow queries (>100ms)
|
||||
26. Implement query result caching
|
||||
27. Add connection pooling
|
||||
28. Denormalize where appropriate
|
||||
29. Implement database read replicas
|
||||
|
||||
**Expected Impact**: -60% database query time
|
||||
|
||||
### Phase 6: Frontend Optimization (10 hours)
|
||||
30. Minimize and compress JavaScript
|
||||
31. Minimize and compress CSS
|
||||
32. Remove unused CSS (PurgeCSS)
|
||||
33. Implement critical CSS
|
||||
34. Defer non-critical JavaScript
|
||||
35. Reduce DOM size
|
||||
36. Optimize React rendering (memo, useMemo)
|
||||
37. Implement virtual scrolling for long lists
|
||||
|
||||
**Expected Impact**: -35% JavaScript execution time
|
||||
|
||||
### Phase 7: Network Optimization (4 hours)
|
||||
38. Enable HTTP/2
|
||||
39. Implement resource hints (preconnect, prefetch)
|
||||
40. Reduce number of HTTP requests
|
||||
41. Enable Brotli compression
|
||||
42. Optimize third-party scripts
|
||||
|
||||
**Expected Impact**: -25% network time
|
||||
|
||||
### Phase 8: Monitoring & Testing (4 hours)
|
||||
43. Set up performance monitoring (Datadog/New Relic)
|
||||
44. Add Real User Monitoring (RUM)
|
||||
45. Create performance budgets
|
||||
46. Set up automated Lighthouse CI
|
||||
47. Test on real devices
|
||||
|
||||
**Estimated Time**: 50 hours (2 weeks)
|
||||
|
||||
**Target Metrics** (90th percentile):
|
||||
- LCP: <2.0s (from 4.2s) ✅
|
||||
- FID: <50ms (from 280ms) ✅
|
||||
- CLS: <0.05 (from 0.25) ✅
|
||||
- Page Load: <2.5s (from 8.3s) ✅
|
||||
|
||||
**Expected Revenue Impact**:
|
||||
- 100ms faster = 1% conversion increase
|
||||
- Target: 5.8s improvement = ~58% conversion increase
|
||||
- Estimated additional revenue: Significant
|
||||
|
||||
**Priority Order**:
|
||||
1. Image optimization (quick wins)
|
||||
2. Code splitting (high impact)
|
||||
3. Caching (high impact)
|
||||
4. Database optimization (critical)
|
||||
5. Frontend optimization (polish)
|
||||
|
||||
Proceed with this plan? (yes/no/modify)
|
||||
```
|
||||
|
||||
## 重要なポイント
|
||||
|
||||
### プランニングモードの利点
|
||||
|
||||
1. **明確化**: 着手前にロードマップが定まる
|
||||
2. **見積もり**: 時間と工数の見積もりが得られる
|
||||
3. **リスク評価**: 潜在的な問題を早期に特定できる
|
||||
4. **優先順位付け**: タスクの論理的な順序を整理できる
|
||||
5. **承認**: 実行前にレビュー・承認できる
|
||||
6. **修正**: フィードバックに応じて計画を調整できる
|
||||
|
||||
### プランニングモードを使うべきとき
|
||||
|
||||
✅ **常に使うべき場面**:
|
||||
- 複数日にわたるプロジェクト
|
||||
- チームでの協業
|
||||
- 重要なシステム変更
|
||||
- 新しい概念の学習
|
||||
- 複雑なリファクタリング
|
||||
|
||||
❌ **使うべきでない場面**:
|
||||
- バグ修正
|
||||
- 小さな調整
|
||||
- 単純な質問
|
||||
- 軽い試行錯誤
|
||||
|
||||
### ベストプラクティス
|
||||
|
||||
1. 承認前に計画を **慎重にレビュー** する
|
||||
2. 問題を見つけたら **計画を修正** する
|
||||
3. 複雑なタスクは **分解** する
|
||||
4. **現実的な** 時間見積もりを行う
|
||||
5. **ロールバック** 戦略を含める
|
||||
6. **成功基準** を設ける
|
||||
7. 各フェーズの **テスト計画** を含める
|
||||
|
||||
---
|
||||
**最終更新**: 2026 年 4 月 9 日
|
||||
@@ -0,0 +1,887 @@
|
||||
<!-- i18n-source: 10-cli/README.md -->
|
||||
<!-- i18n-source-sha: e43872e -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="../../resources/logos/claude-howto-logo-dark.svg">
|
||||
<img alt="Claude How To" src="../../resources/logos/claude-howto-logo.svg">
|
||||
</picture>
|
||||
|
||||
# CLI リファレンス
|
||||
|
||||
## 概観
|
||||
|
||||
Claude Code CLI(Command Line Interface)は Claude Code を操作する主要な手段である。クエリの実行、セッション管理、モデル設定、開発ワークフローへの組み込みを行う強力なオプション群を備えている。
|
||||
|
||||
## アーキテクチャ
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A["User Terminal"] -->|"claude [options] [query]"| B["Claude Code CLI"]
|
||||
B -->|Interactive| C["REPL Mode"]
|
||||
B -->|"--print"| D["Print Mode (SDK)"]
|
||||
B -->|"--resume"| E["Session Resume"]
|
||||
C -->|Conversation| F["Claude API"]
|
||||
D -->|Single Query| F
|
||||
E -->|Load Context| F
|
||||
F -->|Response| G["Output"]
|
||||
G -->|text/json/stream-json| H["Terminal/Pipe"]
|
||||
```
|
||||
|
||||
## ランタイムとパッケージング
|
||||
|
||||
**v2.1.113** 以降、Claude Code CLI は npm のオプション依存を介して **プラットフォーム別のネイティブバイナリ**(macOS、Linux、Windows)を起動する。バイナリはインストール時に OS とアーキテクチャに合わせて選択される — 旧来のバンドル JavaScript ランタイムは macOS / Linux ではもはやデフォルトではない。
|
||||
|
||||
**ユーザー側のインストール手順は変わらない**: `npm install -g @anthropic-ai/claude-code` がそのまま動作し、引き続き推奨経路である。裏側で npm がプラットフォームに合った正しいネイティブバイナリを取得する。
|
||||
|
||||
**ダウンロードホスト**(v2.1.116+): ネイティブバイナリ成果物は `https://downloads.claude.ai/claude-code-releases` から配信される。
|
||||
|
||||
> **企業ネットワーク/プロキシ環境**: ネットワークが明示的な許可リストを必要とする場合、プロキシのエグレスルールに `downloads.claude.ai`(および `https://downloads.claude.ai/claude-code-releases`)を追加すること。以前 `storage.googleapis.com` または npm レジストリのみを許可していた環境は更新が必要で、未対応のままだと `claude update` や初回インストールが失敗する。
|
||||
|
||||
旧来の JavaScript バンドルは Windows 用および固定利用の環境向けに引き続き提供される。これらのインストールでは Glob と Grep が引き続きファーストクラスツールとして同梱される([ツール](#ツールと権限の管理) 節の Glob/Grep 注記を参照)。
|
||||
|
||||
## CLI コマンド
|
||||
|
||||
| コマンド | 説明 | 例 |
|
||||
|---------|------|-----|
|
||||
| `claude` | 対話型 REPL を起動 | `claude` |
|
||||
| `claude "query"` | 初期プロンプト付きで REPL を起動 | `claude "explain this project"` |
|
||||
| `claude -p "query"` | プリントモード - クエリ実行後に終了 | `claude -p "explain this function"` |
|
||||
| `cat file \| claude -p "query"` | パイプ入力を処理 | `cat logs.txt \| claude -p "explain"` |
|
||||
| `claude -c` | 直近の会話を継続 | `claude -c` |
|
||||
| `claude -c -p "query"` | プリントモードで継続 | `claude -c -p "check for type errors"` |
|
||||
| `claude -r "<session>" "query"` | ID または名前でセッション再開 | `claude -r "auth-refactor" "finish this PR"` |
|
||||
| `claude update` | 最新版に更新 | `claude update` |
|
||||
| `/doctor`(スラッシュコマンド) | インストール、設定、プラグインの健全性を診断する。v2.1.116 以降は **Claude が応答中でも開ける** ようになり、ステータスアイコンをインライン表示し、`f` キーで検出された問題を自動修正する | REPL 内で `/doctor` を実行 |
|
||||
| `claude mcp` | MCP サーバーを設定 | [MCP のドキュメント](../05-mcp/) を参照 |
|
||||
| `claude mcp serve` | Claude Code を MCP サーバーとして起動 | `claude mcp serve` |
|
||||
| `claude agents` | 設定済みのサブエージェントを一覧表示 | `claude agents` |
|
||||
| `claude auto-mode defaults` | 自動モードのデフォルトルールを JSON で出力 | `claude auto-mode defaults` |
|
||||
| `claude remote-control` | リモートコントロールサーバーを起動 | `claude remote-control` |
|
||||
| `claude plugin` | プラグインを管理(インストール・有効化・無効化) | `claude plugin install my-plugin` |
|
||||
| `claude plugin tag <version>` | バージョン検証付きでプラグインのリリース git タグを作成(v2.1.118+) | `claude plugin tag v0.3.0` |
|
||||
| `claude install [version]` | 指定したネイティブバイナリのバージョンをインストール。`stable`、`latest`、明示的なバージョン文字列を受け付ける | `claude install 2.1.119` |
|
||||
| `claude auth login` | ログイン(`--email`、`--sso` をサポート) | `claude auth login --email user@example.com` |
|
||||
| `claude auth logout` | 現在のアカウントからログアウト | `claude auth logout` |
|
||||
| `claude auth status` | 認証状態を確認(ログイン中なら exit 0、未ログインなら 1) | `claude auth status` |
|
||||
|
||||
## 主要フラグ
|
||||
|
||||
| フラグ | 説明 | 例 |
|
||||
|------|------|-----|
|
||||
| `-p, --print` | 対話モードを使わず応答を出力 | `claude -p "query"` |
|
||||
| `-c, --continue` | 直近の会話を読み込む | `claude --continue` |
|
||||
| `-r, --resume` | ID または名前で特定セッションを再開 | `claude --resume auth-refactor` |
|
||||
| `-v, --version` | バージョン番号を出力 | `claude -v` |
|
||||
| `-w, --worktree` | 隔離された git ワークツリーで起動 | `claude -w` |
|
||||
| `-n, --name` | セッションの表示名 | `claude -n "auth-refactor"` |
|
||||
| `--from-pr <url-or-number>` | プル/マージリクエストに紐づくセッションを再開する。v2.1.119 以降は GitHub(クラウド + Enterprise)、GitLab MR、Bitbucket PR の URL を受け付ける(以前は GitHub.com のみ) | `claude --from-pr 42` または `claude --from-pr https://gitlab.example.com/org/repo/-/merge_requests/17` |
|
||||
| `--remote "task"` | claude.ai 上に web セッションを作成 | `claude --remote "implement API"` |
|
||||
| `--remote-control, --rc` | リモートコントロール付きの対話セッション | `claude --rc` |
|
||||
| `--teleport` | web セッションをローカルで再開 | `claude --teleport` |
|
||||
| `--teammate-mode` | エージェントチームの表示モード | `claude --teammate-mode tmux` |
|
||||
| `--bare` | 最小モード(フック、スキル、プラグイン、MCP、自動メモリ、CLAUDE.md をスキップ) | `claude --bare` |
|
||||
| `--enable-auto-mode` | 自動権限モードを解禁(Opus 4.7 の Max 加入者には不要) | `claude --enable-auto-mode` |
|
||||
| `--channels` | MCP チャンネルプラグインを購読 | `claude --channels discord,telegram` |
|
||||
| `--chrome` / `--no-chrome` | Chrome ブラウザ統合を有効化/無効化 | `claude --chrome` |
|
||||
| `--effort` | 思考労力レベルを設定 | `claude --effort high` |
|
||||
| `--init` / `--init-only` | 初期化フックを実行 | `claude --init` |
|
||||
| `--maintenance` | メンテナンスフックを実行して終了 | `claude --maintenance` |
|
||||
| `--disable-slash-commands` | すべてのスキルとスラッシュコマンドを無効化 | `claude --disable-slash-commands` |
|
||||
| `--no-session-persistence` | セッション保存を無効化(プリントモード) | `claude -p --no-session-persistence "query"` |
|
||||
| `--exclude-dynamic-system-prompt-sections` | プロンプトキャッシュヒット率向上のため、システムプロンプトから動的セクションを除外 | `claude -p --exclude-dynamic-system-prompt-sections "query"` |
|
||||
|
||||
### 対話モードとプリントモード
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
A["claude"] -->|Default| B["Interactive REPL"]
|
||||
A -->|"-p flag"| C["Print Mode"]
|
||||
B -->|Features| D["Multi-turn conversation<br>Tab completion<br>History<br>Slash commands"]
|
||||
C -->|Features| E["Single query<br>Scriptable<br>Pipeable<br>JSON output"]
|
||||
```
|
||||
|
||||
**対話モード**(デフォルト):
|
||||
```bash
|
||||
# 対話セッションを開始
|
||||
claude
|
||||
|
||||
# 初期プロンプト付きで開始
|
||||
claude "explain the authentication flow"
|
||||
```
|
||||
|
||||
**プリントモード**(非対話):
|
||||
```bash
|
||||
# 単一クエリ実行後に終了
|
||||
claude -p "what does this function do?"
|
||||
|
||||
# ファイル内容を処理
|
||||
cat error.log | claude -p "explain this error"
|
||||
|
||||
# 他のツールとチェーン
|
||||
claude -p "list todos" | grep "URGENT"
|
||||
```
|
||||
|
||||
## モデルと設定
|
||||
|
||||
| フラグ | 説明 | 例 |
|
||||
|------|------|-----|
|
||||
| `--model` | モデルを設定(sonnet、opus、haiku、または完全名) | `claude --model opus` |
|
||||
| `--fallback-model` | 過負荷時の自動フォールバックモデル | `claude -p --fallback-model sonnet "query"` |
|
||||
| `--agent` | セッションに使うエージェントを指定 | `claude --agent my-custom-agent` |
|
||||
| `--agents` | JSON でカスタムサブエージェントを定義 | [Agents の設定](#agents-の設定) を参照 |
|
||||
| `--effort` | 労力レベルを設定(low、medium、high、xhigh、max) | `claude --effort xhigh` |
|
||||
|
||||
### モデル選択の例
|
||||
|
||||
```bash
|
||||
# 複雑なタスクには Opus 4.7
|
||||
claude --model opus "design a caching strategy"
|
||||
|
||||
# 速いタスクには Haiku 4.5
|
||||
claude --model haiku -p "format this JSON"
|
||||
|
||||
# モデル名のフルネーム指定
|
||||
claude --model claude-sonnet-4-6-20250929 "review this code"
|
||||
|
||||
# 信頼性のためフォールバック付き
|
||||
claude -p --model opus --fallback-model sonnet "analyze architecture"
|
||||
|
||||
# opusplan(Opus が計画、Sonnet が実装)
|
||||
claude --model opusplan "design and implement the caching layer"
|
||||
```
|
||||
|
||||
## システムプロンプトのカスタマイズ
|
||||
|
||||
| フラグ | 説明 | 例 |
|
||||
|------|------|-----|
|
||||
| `--system-prompt` | デフォルトプロンプト全体を置き換える | `claude --system-prompt "You are a Python expert"` |
|
||||
| `--system-prompt-file` | ファイルからプロンプトを読み込む(プリントモード) | `claude -p --system-prompt-file ./prompt.txt "query"` |
|
||||
| `--append-system-prompt` | デフォルトプロンプトに追記 | `claude --append-system-prompt "Always use TypeScript"` |
|
||||
|
||||
### システムプロンプトの例
|
||||
|
||||
```bash
|
||||
# 完全カスタムなペルソナ
|
||||
claude --system-prompt "You are a senior security engineer. Focus on vulnerabilities."
|
||||
|
||||
# 特定の指示を追加
|
||||
claude --append-system-prompt "Always include unit tests with code examples"
|
||||
|
||||
# 複雑なプロンプトをファイルから読み込み
|
||||
claude -p --system-prompt-file ./prompts/code-reviewer.txt "review main.py"
|
||||
```
|
||||
|
||||
### システムプロンプトフラグの比較
|
||||
|
||||
| フラグ | 挙動 | 対話 | プリント |
|
||||
|------|-----|------|---------|
|
||||
| `--system-prompt` | デフォルトのシステムプロンプト全体を置き換える | ✅ | ✅ |
|
||||
| `--system-prompt-file` | ファイルのプロンプトに置き換える | ❌ | ✅ |
|
||||
| `--append-system-prompt` | デフォルトに追記する | ✅ | ✅ |
|
||||
|
||||
**`--system-prompt-file` はプリントモードでのみ使用する。対話モードでは `--system-prompt` または `--append-system-prompt` を使うこと。**
|
||||
|
||||
## ツールと権限の管理
|
||||
|
||||
| フラグ | 説明 | 例 |
|
||||
|------|------|-----|
|
||||
| `--tools` | 利用可能な組み込みツールを制限 | `claude -p --tools "Bash,Edit,Read" "query"` |
|
||||
| `--allowedTools` | 確認なしで実行できるツール | `"Bash(git log:*)" "Read"` |
|
||||
| `--disallowedTools` | コンテキストから除外するツール | `"Bash(rm:*)" "Edit"` |
|
||||
| `--dangerously-skip-permissions` | 全ての権限プロンプトをスキップ | `claude --dangerously-skip-permissions` |
|
||||
| `--permission-mode` | 指定した権限モードで開始 | `claude --permission-mode auto` |
|
||||
| `--permission-prompt-tool` | 権限処理用の MCP ツール | `claude -p --permission-prompt-tool mcp_auth "query"` |
|
||||
| `--enable-auto-mode` | 自動権限モードを解禁 | `claude --enable-auto-mode` |
|
||||
|
||||
> **Glob / Grep 注記(v2.1.113+)**: ネイティブな macOS/Linux ビルドでは、`Glob` と `Grep` は独立したファーストクラスツールではなく、Bash ツール経由で呼び出される組み込みの `bfs` および `ugrep` バイナリとして提供される。Windows 版および npm バンドル(JS)版では引き続きスタンドアロンツールとして公開される。サブエージェントの `allowedTools` / `disallowedTools` リストでは、バックエンド側の置換は透過的なため、どのプラットフォームでも設定では引き続き `Glob` / `Grep` を参照すればよい。
|
||||
|
||||
> **PowerShell の自動承認(v2.1.119)**: PowerShell ツールのコマンドは、Bash コマンドとまったく同じ方式で権限モードによる自動承認が可能になった。`Bash(...)` ルールで使うのと同じマッチャ構文で PowerShell の権限を絞り込める — 例: `PowerShell(Get-ChildItem:*)`。
|
||||
|
||||
### 権限の例
|
||||
|
||||
```bash
|
||||
# コードレビュー用の読み取り専用モード
|
||||
claude --permission-mode plan "review this codebase"
|
||||
|
||||
# 安全なツールのみに制限
|
||||
claude --tools "Read,Grep,Glob" -p "find all TODO comments"
|
||||
|
||||
# 特定の git コマンドを確認なしで許可
|
||||
claude --allowedTools "Bash(git status:*)" "Bash(git log:*)"
|
||||
|
||||
# 危険な操作をブロック
|
||||
claude --disallowedTools "Bash(rm -rf:*)" "Bash(git push --force:*)"
|
||||
```
|
||||
|
||||
## 出力とフォーマット
|
||||
|
||||
| フラグ | 説明 | オプション | 例 |
|
||||
|------|------|-----------|-----|
|
||||
| `--output-format` | 出力フォーマット指定(プリントモード) | `text`、`json`、`stream-json` | `claude -p --output-format json "query"` |
|
||||
| `--input-format` | 入力フォーマット指定(プリントモード) | `text`、`stream-json` | `claude -p --input-format stream-json` |
|
||||
| `--verbose` | 詳細ログを有効化 | | `claude --verbose` |
|
||||
| `--include-partial-messages` | ストリーミングイベントを含める | `stream-json` が必要 | `claude -p --output-format stream-json --include-partial-messages "query"` |
|
||||
| `--json-schema` | スキーマに沿って検証された JSON を取得 | | `claude -p --json-schema '{"type":"object"}' "query"` |
|
||||
| `--max-budget-usd` | プリントモードでの最大支出額 | | `claude -p --max-budget-usd 5.00 "query"` |
|
||||
|
||||
### 出力フォーマットの例
|
||||
|
||||
```bash
|
||||
# プレーンテキスト(デフォルト)
|
||||
claude -p "explain this code"
|
||||
|
||||
# プログラムから扱うための JSON
|
||||
claude -p --output-format json "list all functions in main.py"
|
||||
|
||||
# リアルタイム処理向けのストリーミング JSON
|
||||
claude -p --output-format stream-json "generate a long report"
|
||||
|
||||
# スキーマ検証付きの構造化出力
|
||||
claude -p --json-schema '{"type":"object","properties":{"bugs":{"type":"array"}}}' \
|
||||
"find bugs in this code and return as JSON"
|
||||
```
|
||||
|
||||
## ワークスペースとディレクトリ
|
||||
|
||||
| フラグ | 説明 | 例 |
|
||||
|------|------|-----|
|
||||
| `--add-dir` | 追加の作業ディレクトリを指定 | `claude --add-dir ../apps ../lib` |
|
||||
| `--setting-sources` | カンマ区切りの設定ソース | `claude --setting-sources user,project` |
|
||||
|
||||
> **`/config` の永続化(v2.1.119)**: `/config` コマンドで対話的に行った変更は `~/.claude/settings.json` に書き込まれ、通常の優先順位チェーン(project → local → policy → user)に組み込まれるようになった。v2.1.119 以前は一部の `/config` 変更がセッション限定だった。完全な優先順位については [メモリと設定](../02-memory/README.md) を参照。
|
||||
| `--settings` | ファイルまたは JSON から設定を読み込む | `claude --settings ./settings.json` |
|
||||
| `--plugin-dir` | ディレクトリからプラグインを読み込む(複数指定可) | `claude --plugin-dir ./my-plugin` |
|
||||
|
||||
### 複数ディレクトリの例
|
||||
|
||||
```bash
|
||||
# 複数のプロジェクトディレクトリを横断作業
|
||||
claude --add-dir ../frontend ../backend ../shared "find all API endpoints"
|
||||
|
||||
# カスタム設定の読み込み
|
||||
claude --settings '{"model":"opus","verbose":true}' "complex task"
|
||||
```
|
||||
|
||||
## MCP の設定
|
||||
|
||||
| フラグ | 説明 | 例 |
|
||||
|------|------|-----|
|
||||
| `--mcp-config` | JSON から MCP サーバーを読み込む | `claude --mcp-config ./mcp.json` |
|
||||
| `--strict-mcp-config` | 指定した MCP 設定のみを使う | `claude --strict-mcp-config --mcp-config ./mcp.json` |
|
||||
| `--channels` | MCP チャンネルプラグインを購読 | `claude --channels discord,telegram` |
|
||||
|
||||
### MCP の例
|
||||
|
||||
```bash
|
||||
# GitHub MCP サーバーの読み込み
|
||||
claude --mcp-config ./github-mcp.json "list open PRs"
|
||||
|
||||
# 厳密モード - 指定したサーバーのみ
|
||||
claude --strict-mcp-config --mcp-config ./production-mcp.json "deploy to staging"
|
||||
```
|
||||
|
||||
## セッション管理
|
||||
|
||||
| フラグ | 説明 | 例 |
|
||||
|------|------|-----|
|
||||
| `--session-id` | 特定セッション ID(UUID)を使用 | `claude --session-id "550e8400-..."` |
|
||||
| `--fork-session` | 再開時に新しいセッションを作成 | `claude --resume abc123 --fork-session` |
|
||||
|
||||
### セッションの例
|
||||
|
||||
```bash
|
||||
# 直前の会話を継続
|
||||
claude -c
|
||||
|
||||
# 名前付きセッションを再開
|
||||
claude -r "feature-auth" "continue implementing login"
|
||||
|
||||
# 試行錯誤のためセッションをフォーク
|
||||
claude --resume feature-auth --fork-session "try alternative approach"
|
||||
|
||||
# 特定のセッション ID を使用
|
||||
claude --session-id "550e8400-e29b-41d4-a716-446655440000" "continue"
|
||||
```
|
||||
|
||||
### セッションのフォーク
|
||||
|
||||
既存セッションから分岐したブランチを作成し試行錯誤する:
|
||||
|
||||
```bash
|
||||
# 別アプローチを試すためにセッションをフォーク
|
||||
claude --resume abc123 --fork-session "try alternative implementation"
|
||||
|
||||
# カスタムメッセージ付きでフォーク
|
||||
claude -r "feature-auth" --fork-session "test with different architecture"
|
||||
```
|
||||
|
||||
**ユースケース:**
|
||||
- 元のセッションを失わずに別実装を試す
|
||||
- 並行して複数のアプローチを試行錯誤する
|
||||
- 成功した作業からバリエーションのブランチを作る
|
||||
- メインセッションに影響を与えずに破壊的な変更を試す
|
||||
|
||||
元のセッションは変更されず、フォークは新しい独立セッションになる。
|
||||
|
||||
## 高度な機能
|
||||
|
||||
| フラグ | 説明 | 例 |
|
||||
|------|------|-----|
|
||||
| `--chrome` | Chrome ブラウザ統合を有効化 | `claude --chrome` |
|
||||
| `--no-chrome` | Chrome ブラウザ統合を無効化 | `claude --no-chrome` |
|
||||
| `--ide` | 利用可能なら IDE と自動接続 | `claude --ide` |
|
||||
| `--max-turns` | エージェントターンを制限(非対話) | `claude -p --max-turns 3 "query"` |
|
||||
| `--debug` | フィルタ付きデバッグモードを有効化 | `claude --debug "api,mcp"` |
|
||||
| `--enable-lsp-logging` | 詳細な LSP ログを有効化 | `claude --enable-lsp-logging` |
|
||||
| `--betas` | API リクエストのベータヘッダ | `claude --betas interleaved-thinking` |
|
||||
| `--plugin-dir` | ディレクトリからプラグインを読み込む(複数指定可) | `claude --plugin-dir ./my-plugin` |
|
||||
| `--enable-auto-mode` | 自動権限モードを解禁 | `claude --enable-auto-mode` |
|
||||
| `--effort` | 思考労力レベルを設定 | `claude --effort high` |
|
||||
| `--bare` | 最小モード(フック、スキル、プラグイン、MCP、自動メモリ、CLAUDE.md をスキップ) | `claude --bare` |
|
||||
| `--channels` | MCP チャンネルプラグインを購読 | `claude --channels discord` |
|
||||
| `--tmux` | ワークツリー用に tmux セッションを作成 | `claude --tmux` |
|
||||
| `--fork-session` | 再開時に新しいセッション ID を作成 | `claude --resume abc --fork-session` |
|
||||
| `--max-budget-usd` | 最大支出額(プリントモード) | `claude -p --max-budget-usd 5.00 "query"` |
|
||||
| `--json-schema` | 検証付き JSON 出力 | `claude -p --json-schema '{"type":"object"}' "q"` |
|
||||
|
||||
### プラットフォームとテーマの注記(v2.1.112)
|
||||
|
||||
- **Windows 版の PowerShell ツール**: Windows 向けに専用の PowerShell ツールがロールアウトされ、環境変数で制御できる。
|
||||
- **「Auto(ターミナルに合わせる)」テーマ**: 新しい "Auto (match terminal)" テーマで Claude Code のライト/ダーク表示をターミナルと同期できる。
|
||||
- **静かな権限プロンプト**: 読み取り専用の `Bash` 呼び出しと `Glob` パターンは権限プロンプトを発生させなくなった。
|
||||
|
||||
### 高度な例
|
||||
|
||||
```bash
|
||||
# 自律アクション数を制限
|
||||
claude -p --max-turns 5 "refactor this module"
|
||||
|
||||
# API 呼び出しをデバッグ
|
||||
claude --debug "api" "test query"
|
||||
|
||||
# IDE 統合を有効化
|
||||
claude --ide "help me with this file"
|
||||
```
|
||||
|
||||
## Agents の設定
|
||||
|
||||
`--agents` フラグはセッションに対するカスタムサブエージェントを定義する JSON オブジェクトを受け取る。
|
||||
|
||||
### Agents の JSON フォーマット
|
||||
|
||||
```json
|
||||
{
|
||||
"agent-name": {
|
||||
"description": "Required: when to invoke this agent",
|
||||
"prompt": "Required: system prompt for the agent",
|
||||
"tools": ["Optional", "array", "of", "tools"],
|
||||
"model": "optional: sonnet|opus|haiku"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**必須フィールド:**
|
||||
- `description` - エージェントを使う場面の自然言語による説明
|
||||
- `prompt` - エージェントの役割と挙動を定義するシステムプロンプト
|
||||
|
||||
**任意フィールド:**
|
||||
- `tools` - 利用可能なツールの配列(省略時は全ツールを継承)
|
||||
- 形式: `["Read", "Grep", "Glob", "Bash"]`
|
||||
- `model` - 使用するモデル: `sonnet`、`opus`、`haiku`
|
||||
|
||||
### 完全な Agents の例
|
||||
|
||||
```json
|
||||
{
|
||||
"code-reviewer": {
|
||||
"description": "Expert code reviewer. Use proactively after code changes.",
|
||||
"prompt": "You are a senior code reviewer. Focus on code quality, security, and best practices.",
|
||||
"tools": ["Read", "Grep", "Glob", "Bash"],
|
||||
"model": "sonnet"
|
||||
},
|
||||
"debugger": {
|
||||
"description": "Debugging specialist for errors and test failures.",
|
||||
"prompt": "You are an expert debugger. Analyze errors, identify root causes, and provide fixes.",
|
||||
"tools": ["Read", "Edit", "Bash", "Grep"],
|
||||
"model": "opus"
|
||||
},
|
||||
"documenter": {
|
||||
"description": "Documentation specialist for generating guides.",
|
||||
"prompt": "You are a technical writer. Create clear, comprehensive documentation.",
|
||||
"tools": ["Read", "Write"],
|
||||
"model": "haiku"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Agents コマンドの例
|
||||
|
||||
```bash
|
||||
# カスタムエージェントをインラインで定義
|
||||
claude --agents '{
|
||||
"security-auditor": {
|
||||
"description": "Security specialist for vulnerability analysis",
|
||||
"prompt": "You are a security expert. Find vulnerabilities and suggest fixes.",
|
||||
"tools": ["Read", "Grep", "Glob"],
|
||||
"model": "opus"
|
||||
}
|
||||
}' "audit this codebase for security issues"
|
||||
|
||||
# ファイルからエージェントを読み込み
|
||||
claude --agents "$(cat ~/.claude/agents.json)" "review the auth module"
|
||||
|
||||
# 他のフラグと組み合わせ
|
||||
claude -p --agents "$(cat agents.json)" --model sonnet "analyze performance"
|
||||
```
|
||||
|
||||
### エージェントの優先順位
|
||||
|
||||
複数のエージェント定義が存在する場合、以下の優先順位で読み込まれる:
|
||||
1. **CLI 定義**(`--agents` フラグ) - セッション固有
|
||||
2. **プロジェクトレベル**(`.claude/agents/`) - 現在のプロジェクト
|
||||
3. **ユーザーレベル**(`~/.claude/agents/`) - 全プロジェクト
|
||||
|
||||
CLI 定義のエージェントは、当該セッションにおいてプロジェクトおよびユーザーのエージェントを上書きする。プロジェクトレベルのエージェントは、名前が衝突した場合にユーザーレベルのエージェントを上書きする。プラグインレベルのエージェントを含む完全な優先順位表は [Lesson 04 — サブエージェント](../04-subagents/README.md#file-locations) を参照。
|
||||
|
||||
---
|
||||
|
||||
## 価値の高いユースケース
|
||||
|
||||
### 1. CI/CD への組み込み
|
||||
|
||||
Claude Code を CI/CD パイプラインに組み込み、コードレビュー、テスト、ドキュメント生成を自動化する。
|
||||
|
||||
**GitHub Actions の例:**
|
||||
|
||||
```yaml
|
||||
name: AI Code Review
|
||||
|
||||
on: [pull_request]
|
||||
|
||||
jobs:
|
||||
review:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install Claude Code
|
||||
run: npm install -g @anthropic-ai/claude-code
|
||||
|
||||
- name: Run Code Review
|
||||
env:
|
||||
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
||||
run: |
|
||||
claude -p --output-format json \
|
||||
--max-turns 1 \
|
||||
"Review the changes in this PR for:
|
||||
- Security vulnerabilities
|
||||
- Performance issues
|
||||
- Code quality
|
||||
Output as JSON with 'issues' array" > review.json
|
||||
|
||||
- name: Post Review Comment
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
const fs = require('fs');
|
||||
const review = JSON.parse(fs.readFileSync('review.json', 'utf8'));
|
||||
// Process and post review comments
|
||||
```
|
||||
|
||||
**Jenkins パイプライン:**
|
||||
|
||||
```groovy
|
||||
pipeline {
|
||||
agent any
|
||||
stages {
|
||||
stage('AI Review') {
|
||||
steps {
|
||||
sh '''
|
||||
claude -p --output-format json \
|
||||
--max-turns 3 \
|
||||
"Analyze test coverage and suggest missing tests" \
|
||||
> coverage-analysis.json
|
||||
'''
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 2. スクリプトのパイプ処理
|
||||
|
||||
ファイル、ログ、データを Claude に流し込んで分析する。
|
||||
|
||||
**ログ解析:**
|
||||
|
||||
```bash
|
||||
# エラーログの分析
|
||||
tail -1000 /var/log/app/error.log | claude -p "summarize these errors and suggest fixes"
|
||||
|
||||
# アクセスログ内のパターン抽出
|
||||
cat access.log | claude -p "identify suspicious access patterns"
|
||||
|
||||
# git 履歴の要約
|
||||
git log --oneline -50 | claude -p "summarize recent development activity"
|
||||
```
|
||||
|
||||
**コード処理:**
|
||||
|
||||
```bash
|
||||
# 特定ファイルのレビュー
|
||||
cat src/auth.ts | claude -p "review this authentication code for security issues"
|
||||
|
||||
# ドキュメントの生成
|
||||
cat src/api/*.ts | claude -p "generate API documentation in markdown"
|
||||
|
||||
# TODO の抽出と優先順位付け
|
||||
grep -r "TODO" src/ | claude -p "prioritize these TODOs by importance"
|
||||
```
|
||||
|
||||
### 3. マルチセッションのワークフロー
|
||||
|
||||
複数の会話スレッドで複雑なプロジェクトを管理する。
|
||||
|
||||
```bash
|
||||
# フィーチャーブランチ用セッションを開始
|
||||
claude -r "feature-auth" "let's implement user authentication"
|
||||
|
||||
# 後で同じセッションを継続
|
||||
claude -r "feature-auth" "add password reset functionality"
|
||||
|
||||
# 別アプローチを試すためフォーク
|
||||
claude --resume feature-auth --fork-session "try OAuth instead"
|
||||
|
||||
# 別の機能のセッションへ切り替え
|
||||
claude -r "feature-payments" "continue with Stripe integration"
|
||||
```
|
||||
|
||||
### 4. カスタムエージェントの設定
|
||||
|
||||
チームのワークフロー向けに専門エージェントを定義する。
|
||||
|
||||
```bash
|
||||
# エージェント設定をファイルに保存
|
||||
cat > ~/.claude/agents.json << 'EOF'
|
||||
{
|
||||
"reviewer": {
|
||||
"description": "Code reviewer for PR reviews",
|
||||
"prompt": "Review code for quality, security, and maintainability.",
|
||||
"model": "opus"
|
||||
},
|
||||
"documenter": {
|
||||
"description": "Documentation specialist",
|
||||
"prompt": "Generate clear, comprehensive documentation.",
|
||||
"model": "sonnet"
|
||||
},
|
||||
"refactorer": {
|
||||
"description": "Code refactoring expert",
|
||||
"prompt": "Suggest and implement clean code refactoring.",
|
||||
"tools": ["Read", "Edit", "Glob"]
|
||||
}
|
||||
}
|
||||
EOF
|
||||
|
||||
# セッションでエージェントを使用
|
||||
claude --agents "$(cat ~/.claude/agents.json)" "review the auth module"
|
||||
```
|
||||
|
||||
### 5. バッチ処理
|
||||
|
||||
一貫した設定で複数クエリを処理する。
|
||||
|
||||
```bash
|
||||
# 複数ファイルの処理
|
||||
for file in src/*.ts; do
|
||||
echo "Processing $file..."
|
||||
claude -p --model haiku "summarize this file: $(cat $file)" >> summaries.md
|
||||
done
|
||||
|
||||
# バッチコードレビュー
|
||||
find src -name "*.py" -exec sh -c '
|
||||
echo "## $1" >> review.md
|
||||
cat "$1" | claude -p "brief code review" >> review.md
|
||||
' _ {} \;
|
||||
|
||||
# 全モジュールのテスト生成
|
||||
for module in $(ls src/modules/); do
|
||||
claude -p "generate unit tests for src/modules/$module" > "tests/$module.test.ts"
|
||||
done
|
||||
```
|
||||
|
||||
### 6. セキュリティを意識した開発
|
||||
|
||||
権限制御で安全に運用する。
|
||||
|
||||
```bash
|
||||
# 読み取り専用のセキュリティ監査
|
||||
claude --permission-mode plan \
|
||||
--tools "Read,Grep,Glob" \
|
||||
"audit this codebase for security vulnerabilities"
|
||||
|
||||
# 危険なコマンドをブロック
|
||||
claude --disallowedTools "Bash(rm:*)" "Bash(curl:*)" "Bash(wget:*)" \
|
||||
"help me clean up this project"
|
||||
|
||||
# 制限付き自動化
|
||||
claude -p --max-turns 2 \
|
||||
--allowedTools "Read" "Glob" \
|
||||
"find all hardcoded credentials"
|
||||
```
|
||||
|
||||
### 7. JSON API としての利用
|
||||
|
||||
`jq` のパースと組み合わせて、Claude をプログラム可能な API として活用する。
|
||||
|
||||
```bash
|
||||
# 構造化された分析を取得
|
||||
claude -p --output-format json \
|
||||
--json-schema '{"type":"object","properties":{"functions":{"type":"array"},"complexity":{"type":"string"}}}' \
|
||||
"analyze main.py and return function list with complexity rating"
|
||||
|
||||
# jq で処理に組み込む
|
||||
claude -p --output-format json "list all API endpoints" | jq '.endpoints[]'
|
||||
|
||||
# スクリプト内で利用
|
||||
RESULT=$(claude -p --output-format json "is this code secure? answer with {secure: boolean, issues: []}" < code.py)
|
||||
if echo "$RESULT" | jq -e '.secure == false' > /dev/null; then
|
||||
echo "Security issues found!"
|
||||
echo "$RESULT" | jq '.issues[]'
|
||||
fi
|
||||
```
|
||||
|
||||
### jq でのパース例
|
||||
|
||||
`jq` で Claude の JSON 出力をパース・処理する:
|
||||
|
||||
```bash
|
||||
# 特定フィールドの抽出
|
||||
claude -p --output-format json "analyze this code" | jq '.result'
|
||||
|
||||
# 配列要素のフィルタ
|
||||
claude -p --output-format json "list issues" | jq -r '.issues[] | select(.severity=="high")'
|
||||
|
||||
# 複数フィールドの抽出
|
||||
claude -p --output-format json "describe the project" | jq -r '.{name, version, description}'
|
||||
|
||||
# CSV への変換
|
||||
claude -p --output-format json "list functions" | jq -r '.functions[] | [.name, .lineCount] | @csv'
|
||||
|
||||
# 条件付き処理
|
||||
claude -p --output-format json "check security" | jq 'if .vulnerabilities | length > 0 then "UNSAFE" else "SAFE" end'
|
||||
|
||||
# ネストされた値の取得
|
||||
claude -p --output-format json "analyze performance" | jq '.metrics.cpu.usage'
|
||||
|
||||
# 配列全体の処理
|
||||
claude -p --output-format json "find todos" | jq '.todos | length'
|
||||
|
||||
# 出力の変換
|
||||
claude -p --output-format json "list improvements" | jq 'map({title: .title, priority: .priority})'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## モデル
|
||||
|
||||
Claude Code は能力の異なる複数のモデルをサポートする:
|
||||
|
||||
| モデル | ID | コンテキストウィンドウ | 備考 |
|
||||
|-------|-----|----------------------|------|
|
||||
| Opus 4.7 | `claude-opus-4-7` | 1M トークン(1M コンテキスト対応は v2.1.117 で実装) | 最も能力が高く、適応的な労力レベルを備える。Claude Code では Opus 4.7 ローンチ(2026-04-16)以降 `xhigh` がデフォルトの労力レベル |
|
||||
| Sonnet 4.6 | `claude-sonnet-4-6` | 1M トークン | 速度と能力のバランスが良い。Pro/Max 加入者のデフォルト労力は v2.1.117 で `medium` から `high` に引き上げられた |
|
||||
| Haiku 4.5 | `claude-haiku-4-5` | 1M トークン | 最速で、軽いタスクに最適 |
|
||||
|
||||
### モデルの選択
|
||||
|
||||
```bash
|
||||
# 短縮名で指定
|
||||
claude --model opus "complex architectural review"
|
||||
claude --model sonnet "implement this feature"
|
||||
claude --model haiku -p "format this JSON"
|
||||
|
||||
# opusplan エイリアス(Opus が計画、Sonnet が実装)
|
||||
claude --model opusplan "design and implement the API"
|
||||
|
||||
# セッション中にファストモードを切り替え
|
||||
/fast
|
||||
```
|
||||
|
||||
### 労力レベル(Opus 4.7)
|
||||
|
||||
Opus 4.7 は適応的推論をサポートし、軽い順から `low`(○)、`medium`(◐)、`high`(●)、`xhigh`(Claude Code では Opus 4.7 ローンチ以降のデフォルト、2026-04-16)、`max`(Opus 4.7 のみ)の労力レベルを持つ。Opus 4.6 / Sonnet 4.6 では、Pro/Max 加入者のデフォルト労力が v2.1.117 で `medium` から `high` に引き上げられた。
|
||||
|
||||
```bash
|
||||
# CLI フラグで労力レベルを設定
|
||||
claude --effort xhigh "complex review"
|
||||
|
||||
# スラッシュコマンドで労力レベルを設定
|
||||
/effort xhigh
|
||||
|
||||
# 環境変数で労力レベルを設定
|
||||
export CLAUDE_CODE_EFFORT_LEVEL=xhigh # low, medium, high, xhigh (default on Opus 4.7), or max (Opus 4.7 only)
|
||||
```
|
||||
|
||||
プロンプト内のキーワード「ultrathink」は深い推論を有効化する。`max` の労力レベルは Opus 4.7 専用である。
|
||||
|
||||
---
|
||||
|
||||
## 主要な環境変数
|
||||
|
||||
| 変数 | 説明 |
|
||||
|------|------|
|
||||
| `ANTHROPIC_API_KEY` | 認証用の API キー |
|
||||
| `ANTHROPIC_MODEL` | デフォルトモデルを上書き |
|
||||
| `ANTHROPIC_CUSTOM_MODEL_OPTION` | API 用のカスタムモデルオプション |
|
||||
| `ANTHROPIC_DEFAULT_OPUS_MODEL` | デフォルトの Opus モデル ID を上書き |
|
||||
| `ANTHROPIC_DEFAULT_SONNET_MODEL` | デフォルトの Sonnet モデル ID を上書き |
|
||||
| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | デフォルトの Haiku モデル ID を上書き |
|
||||
| `MAX_THINKING_TOKENS` | 拡張思考のトークン予算を設定 |
|
||||
| `CLAUDE_CODE_EFFORT_LEVEL` | 労力レベルを設定(`low`/`medium`/`high`/`xhigh`/`max`) — `xhigh` は Opus 4.7 のデフォルト、`max` は Opus 4.7 のみ |
|
||||
| `CLAUDE_CODE_SIMPLE` | 最小モード(`--bare` フラグで設定される) |
|
||||
| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | CLAUDE.md の自動更新を無効化 |
|
||||
| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | バックグラウンドタスク実行を無効化 |
|
||||
| `CLAUDE_CODE_DISABLE_CRON` | スケジュール/cron タスクを無効化 |
|
||||
| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | git 関連の指示を無効化 |
|
||||
| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | ターミナルタイトル更新を無効化 |
|
||||
| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | 1M トークンコンテキストウィンドウを無効化 |
|
||||
| `CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK` | 非ストリーミングフォールバックを無効化 |
|
||||
| `CLAUDE_CODE_ENABLE_TASKS` | タスクリスト機能を有効化 |
|
||||
| `CLAUDE_CODE_TASK_LIST_ID` | セッション間で共有する名前付きタスクディレクトリ |
|
||||
| `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | プロンプトサジェストを切り替え(`true`/`false`) |
|
||||
| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | 実験的なエージェントチームを有効化 |
|
||||
| `CLAUDE_CODE_NEW_INIT` | 新しい初期化フローを使用 |
|
||||
| `CLAUDE_CODE_SUBAGENT_MODEL` | サブエージェント実行用モデル |
|
||||
| `CLAUDE_CODE_PLUGIN_SEED_DIR` | プラグインシードファイル用ディレクトリ |
|
||||
| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | サブプロセスから取り除く環境変数 |
|
||||
| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | 自動コンパクションのパーセンテージを上書き |
|
||||
| `CLAUDE_STREAM_IDLE_TIMEOUT_MS` | ストリームのアイドルタイムアウト(ミリ秒) |
|
||||
| `SLASH_COMMAND_TOOL_CHAR_BUDGET` | スラッシュコマンドツールの文字数予算 |
|
||||
| `ENABLE_TOOL_SEARCH` | ツール検索機能を有効化 |
|
||||
| `MAX_MCP_OUTPUT_TOKENS` | MCP ツール出力の最大トークン数 |
|
||||
| `CLAUDE_CODE_PERFORCE_MODE` | `1` を設定すると Perforce モードを有効化 — ファイルをデフォルトで読み取り専用として扱う(Perforce/P4 バージョン管理ワークフロー向け)(v2.1.98 追加) |
|
||||
| `DISABLE_UPDATES` | 手動の `claude update` を含むすべての更新経路をブロックする。バックグラウンドの自動更新のみブロックする `DISABLE_AUTOUPDATER` より厳密(v2.1.118+) |
|
||||
| `CLAUDE_CODE_HIDE_CWD` | `1` に設定すると、起動時ロゴでカレント作業ディレクトリを隠す(プライバシー/画面共有用途)(v2.1.119+) |
|
||||
| `CLAUDE_CODE_FORK_SUBAGENT` | `1` を設定すると外部ビルド(Bedrock、Vertex、Foundry)でフォーク済みサブエージェントを有効化。Anthropic API ではフォーク済みサブエージェントが GA のため効果なし(v2.1.117+) |
|
||||
| `OTEL_LOG_TOOL_DETAILS` | `1` を設定すると OpenTelemetry イベント中のカスタムおよび MCP コマンド名のリダクションを解除する(v2.1.117+)。デフォルトはリダクション有効。 |
|
||||
|
||||
> **Vertex AI 上の `ENABLE_TOOL_SEARCH`(v2.1.119+)**: ツール検索は **Google Cloud Vertex AI 上のデプロイではデフォルト無効** である。Vertex 上でツール検索機能を使いたい場合は `export ENABLE_TOOL_SEARCH=true` で明示的にオプトインする必要がある。Anthropic API 直結ではデフォルト有効のままである。
|
||||
|
||||
---
|
||||
|
||||
## クイックリファレンス
|
||||
|
||||
### 最もよく使うコマンド
|
||||
|
||||
```bash
|
||||
# 対話セッション
|
||||
claude
|
||||
|
||||
# サッと質問
|
||||
claude -p "how do I..."
|
||||
|
||||
# 会話を継続
|
||||
claude -c
|
||||
|
||||
# ファイルを処理
|
||||
cat file.py | claude -p "review this"
|
||||
|
||||
# スクリプト用の JSON 出力
|
||||
claude -p --output-format json "query"
|
||||
```
|
||||
|
||||
### フラグの組み合わせ
|
||||
|
||||
| ユースケース | コマンド |
|
||||
|-------------|----------|
|
||||
| 簡易コードレビュー | `cat file | claude -p "review"` |
|
||||
| 構造化出力 | `claude -p --output-format json "query"` |
|
||||
| 安全な探索 | `claude --permission-mode plan` |
|
||||
| 安全装置付き自律実行 | `claude --enable-auto-mode --permission-mode auto` |
|
||||
| CI/CD 連携 | `claude -p --max-turns 3 --output-format json` |
|
||||
| 作業の再開 | `claude -r "session-name"` |
|
||||
| カスタムモデル | `claude --model opus "complex task"` |
|
||||
| 最小モード | `claude --bare "quick query"` |
|
||||
| 予算上限付き実行 | `claude -p --max-budget-usd 2.00 "analyze code"` |
|
||||
|
||||
---
|
||||
|
||||
## トラブルシューティング
|
||||
|
||||
### コマンドが見つからない
|
||||
|
||||
**問題:** `claude: command not found`
|
||||
|
||||
**対処法:**
|
||||
- Claude Code をインストール: `npm install -g @anthropic-ai/claude-code`
|
||||
- PATH に npm のグローバル bin ディレクトリが含まれていることを確認
|
||||
- フルパスで実行を試す: `npx claude`
|
||||
|
||||
### API キーの問題
|
||||
|
||||
**問題:** 認証に失敗する
|
||||
|
||||
**対処法:**
|
||||
- API キーを設定: `export ANTHROPIC_API_KEY=your-key`
|
||||
- キーが有効でクレジットが十分か確認
|
||||
- 要求モデルに対するキー権限を確認
|
||||
|
||||
### セッションが見つからない
|
||||
|
||||
**問題:** セッションを再開できない
|
||||
|
||||
**対処法:**
|
||||
- 利用可能なセッションを一覧表示し、正しい名前/ID を確認
|
||||
- セッションは一定期間使用しないと失効する場合がある
|
||||
- `-c` で直近のセッションを継続する
|
||||
|
||||
### 出力フォーマットの問題
|
||||
|
||||
**問題:** JSON 出力が壊れている
|
||||
|
||||
**対処法:**
|
||||
- `--json-schema` で構造を強制する
|
||||
- プロンプト内に明示的な JSON 指示を含める
|
||||
- プロンプトで JSON を要求するだけでなく `--output-format json` を使用する
|
||||
|
||||
### 権限拒否
|
||||
|
||||
**問題:** ツール実行がブロックされる
|
||||
|
||||
**対処法:**
|
||||
- `--permission-mode` 設定を確認
|
||||
- `--allowedTools` と `--disallowedTools` フラグを見直す
|
||||
- 自動化用途では(注意のうえ)`--dangerously-skip-permissions` を使用
|
||||
|
||||
---
|
||||
|
||||
## 追加リソース
|
||||
|
||||
- **[公式 CLI リファレンス](https://code.claude.com/docs/en/cli-reference)** - 完全なコマンドリファレンス
|
||||
- **[ヘッドレスモードのドキュメント](https://code.claude.com/docs/en/headless)** - 自動実行
|
||||
- **[スラッシュコマンド](../01-slash-commands/)** - Claude 内のカスタムショートカット
|
||||
- **[メモリガイド](../02-memory/)** - CLAUDE.md による永続コンテキスト
|
||||
- **[MCP プロトコル](../05-mcp/)** - 外部ツール連携
|
||||
- **[高度な機能](../09-advanced-features/)** - プランニングモード、拡張思考
|
||||
- **[サブエージェントガイド](../04-subagents/)** - 委譲によるタスク実行
|
||||
|
||||
---
|
||||
|
||||
*[Claude How To](../) ガイドシリーズの一部*
|
||||
|
||||
---
|
||||
|
||||
**最終更新**: 2026 年 4 月 24 日
|
||||
**Claude Code バージョン**: 2.1.119
|
||||
**出典**:
|
||||
- https://code.claude.com/docs/en/cli-reference
|
||||
- https://code.claude.com/docs/en/settings
|
||||
- https://code.claude.com/docs/en/changelog
|
||||
- https://www.anthropic.com/news/claude-opus-4-7
|
||||
- https://github.com/anthropics/claude-code/releases/tag/v2.1.113
|
||||
- https://github.com/anthropics/claude-code/releases/tag/v2.1.116
|
||||
- https://github.com/anthropics/claude-code/releases/tag/v2.1.117
|
||||
- https://github.com/anthropics/claude-code/releases/tag/v2.1.118
|
||||
- https://github.com/anthropics/claude-code/releases/tag/v2.1.119
|
||||
**対応モデル**: Claude Sonnet 4.6、Claude Opus 4.7、Claude Haiku 4.5
|
||||
+544
@@ -0,0 +1,544 @@
|
||||
<!-- i18n-source: CATALOG.md -->
|
||||
<!-- i18n-source-sha: d17d515 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="../resources/logos/claude-howto-logo-dark.svg">
|
||||
<img alt="Claude How To" src="../resources/logos/claude-howto-logo.svg">
|
||||
</picture>
|
||||
|
||||
# Claude Code 機能カタログ
|
||||
|
||||
> Claude Code 全機能のクイックリファレンス:コマンド、エージェント、スキル、プラグイン、フック。
|
||||
|
||||
**ナビゲーション**:[コマンド](#スラッシュコマンド) | [権限モード](#権限モード) | [サブエージェント](#サブエージェント) | [スキル](#スキル) | [プラグイン](#プラグイン) | [MCP サーバ](#mcp-サーバ) | [フック](#フック) | [メモリ](#メモリファイル) | [新機能](#新機能2026-年-4-月)
|
||||
|
||||
---
|
||||
|
||||
## サマリー
|
||||
|
||||
| 機能 | 組み込み | 例 | 合計 | リファレンス |
|
||||
|---------|----------|----------|-------|-----------|
|
||||
| **スラッシュコマンド** | 60 個以上 | 8 | 68 個以上 | [01-slash-commands/](01-slash-commands/) |
|
||||
| **サブエージェント** | 6 | 11 | 17 | [04-subagents/](04-subagents/) |
|
||||
| **スキル** | バンドル 5 | 4 | 9 | [03-skills/](03-skills/) |
|
||||
| **プラグイン** | - | 3 | 3 | [07-plugins/](07-plugins/) |
|
||||
| **MCP サーバ** | 1 | 8 | 9 | [05-mcp/](05-mcp/) |
|
||||
| **フック** | 28 イベント | 8 | 8 | [06-hooks/](06-hooks/) |
|
||||
| **メモリ** | 7 種類 | 3 | 3 | [02-memory/](02-memory/) |
|
||||
| **合計** | **99** | **45** | **119** | |
|
||||
|
||||
---
|
||||
|
||||
## スラッシュコマンド
|
||||
|
||||
コマンドはユーザーが起動する、特定の動作を実行するショートカットである。
|
||||
|
||||
### 組み込みコマンド
|
||||
|
||||
| コマンド | 説明 | 利用シーン |
|
||||
|---------|-------------|-------------|
|
||||
| `/help` | ヘルプ情報を表示 | 初心者、コマンド習得 |
|
||||
| `/btw` | 一時的な脇道質問 — メインコンテキストを汚さない | ちょっとした横道質問 |
|
||||
| `/chrome` | Chrome 連携を設定 | ブラウザ自動化 |
|
||||
| `/clear` | 会話履歴をクリア | やり直し、コンテキスト削減 |
|
||||
| `/diff` | 対話式 diff ビューア | 変更レビュー |
|
||||
| `/config` | 設定を表示・編集 | 動作カスタマイズ |
|
||||
| `/status` | セッション状態を表示 | 現状確認 |
|
||||
| `/agents` | 利用可能エージェントを表示 | 委譲オプション確認 |
|
||||
| `/skills` | 利用可能スキルを表示 | 自動起動機能の確認 |
|
||||
| `/hooks` | 設定済みフックを表示 | 自動化のデバッグ |
|
||||
| `/insights` | セッションパターンを分析 | セッション最適化 |
|
||||
| `/install-slack-app` | Claude Slack アプリのインストール | Slack 連携 |
|
||||
| `/keybindings` | キーボードショートカットをカスタマイズ | キーカスタマイズ |
|
||||
| `/mcp` | MCP サーバを一覧表示 | 外部統合の確認 |
|
||||
| `/memory` | 読み込まれたメモリファイルを表示 | コンテキスト読込デバッグ |
|
||||
| `/mobile` | モバイル用 QR コードを生成 | モバイルアクセス |
|
||||
| `/passes` | 使用パスを表示 | サブスクリプション情報 |
|
||||
| `/plugin` | プラグインを管理 | 拡張のインストール / 削除 |
|
||||
| `/plan` | プランニングモードに入る | 複雑な実装 |
|
||||
| `/proactive` | `/loop` のエイリアス(v2.1.105) | `/loop` と同じ |
|
||||
| `/recap` | セッションに戻ってきたときに要約を表示 | 離席後のコンテキスト把握 |
|
||||
| `/rewind` | チェックポイントへ巻き戻し | 変更取消、別案探索 |
|
||||
| `/checkpoint` | チェックポイント管理 | 状態の保存 / 復元 |
|
||||
| `/cost` | `/usage` のコストタブを開くエイリアス(v2.1.118+) | 支出監視 |
|
||||
| `/context` | コンテキストウィンドウ使用量を表示 | 会話長の管理 |
|
||||
| `/export` | 会話をエクスポート | 参照用に保存 |
|
||||
| `/extra-usage` | 追加使用上限を設定 | レート制限管理 |
|
||||
| `/feedback` | フィードバックやバグ報告を送信 | 問題報告 |
|
||||
| `/login` | Anthropic で認証 | 機能アクセス |
|
||||
| `/logout` | サインアウト | アカウント切替 |
|
||||
| `/sandbox` | サンドボックスモード切替 | 安全なコマンド実行 |
|
||||
| `/doctor` | 診断を実行 | 問題のトラブルシューティング |
|
||||
| `/reload-plugins` | インストール済みプラグインを再読込 | プラグイン管理 |
|
||||
| `/release-notes` | リリースノートを表示 | 新機能の確認 |
|
||||
| `/remote-control` | リモートコントロールを有効化 | リモートアクセス |
|
||||
| `/permissions` | 権限を管理 | アクセス制御 |
|
||||
| `/session` | セッションを管理 | マルチセッションワークフロー |
|
||||
| `/rename` | 現在のセッションを改名 | セッション整理 |
|
||||
| `/resume` | 過去のセッションを再開 | 作業の継続 |
|
||||
| `/todo` | TODO リストを表示・管理 | タスク追跡 |
|
||||
| `/tui` | フルスクリーン TUI(テキストユーザーインターフェース)モード切替 | フルスクリーン / tmux でのちらつきのない描画 |
|
||||
| `/tasks` | バックグラウンドタスクを表示 | 非同期処理の監視 |
|
||||
| `/copy` | 直前の応答をクリップボードにコピー | 出力の素早い共有 |
|
||||
| `/teleport` | セッションを別マシンに転送 | リモートでの作業継続 |
|
||||
| `/desktop` | Claude デスクトップアプリを開く | デスクトップへ切替 |
|
||||
| `/theme` | カラーテーマを変更。v2.1.118 で `~/.claude/themes/<name>.json` 経由のカスタムテーマが追加(プラグインは `themes/` ディレクトリを同梱可能) | 外観のカスタマイズ |
|
||||
| `/usage` | 使用量・コスト・統計の正規コマンド — `/cost` と `/stats` を 1 つのタブビューに統合(v2.1.118) | クォータとコストの監視 |
|
||||
| `/focus` | フォーカスビュー(注意散漫を防ぐ出力表示)を切替 | 長時間タスク中の視覚的ノイズ低減 |
|
||||
| `/fork` | 現在の会話をフォーク | 別案の探索 |
|
||||
| `/stats` | `/usage` の stats タブを開くエイリアス(v2.1.118+) | セッション指標の確認 |
|
||||
| `/statusline` | ステータスラインを設定 | ステータス表示のカスタマイズ |
|
||||
| `/stickers` | セッションステッカーを表示 | 楽しいご褒美 |
|
||||
| `/fast` | 高速出力モード切替 | 応答の高速化 |
|
||||
| `/terminal-setup` | ターミナル統合を設定 | ターミナル機能のセットアップ |
|
||||
| `/undo` | `/rewind` のエイリアス(v2.1.108) | `/rewind` と同じ |
|
||||
| `/upgrade` | アップデート確認 | バージョン管理 |
|
||||
| `/team-onboarding` | このプロジェクトの Claude Code 利用状況からオンボーディングガイドを生成 | 新メンバーのオンボーディング(v2.1.101) |
|
||||
| `/ultraplan` | プランニングタスクを Claude Code Web セッションに渡す(plan モード) | 重い計画作業のオフロード(Research Preview、v2.1.91+) |
|
||||
| `/ultrareview` | 現在の変更に対するクラウドのマルチエージェントコードレビューを実行 | マージ前の深いマルチエージェントレビュー(v2.1.112) |
|
||||
| `/less-permission-prompts` | トランスクリプトをスキャンし、よく使う読取専用ツールの優先許可リストを提案 | プロジェクトでの権限プロンプト繰り返しを削減(v2.1.112) |
|
||||
|
||||
### カスタムコマンド(例)
|
||||
|
||||
| コマンド | 説明 | 利用シーン | スコープ | インストール |
|
||||
|---------|-------------|-------------|-------|--------------|
|
||||
| `/optimize` | コードを最適化分析 | パフォーマンス改善 | プロジェクト | `cp 01-slash-commands/optimize.md .claude/commands/` |
|
||||
| `/pr` | プルリクエスト準備 | PR 提出前 | プロジェクト | `cp 01-slash-commands/pr.md .claude/commands/` |
|
||||
| `/generate-api-docs` | API ドキュメント生成 | API のドキュメント化 | プロジェクト | `cp 01-slash-commands/generate-api-docs.md .claude/commands/` |
|
||||
| `/commit` | コンテキスト付き git コミット作成 | 変更のコミット | ユーザー | `cp 01-slash-commands/commit.md .claude/commands/` |
|
||||
| `/push-all` | ステージ・コミット・プッシュ | 高速デプロイ | ユーザー | `cp 01-slash-commands/push-all.md .claude/commands/` |
|
||||
| `/doc-refactor` | ドキュメント再構成 | ドキュメント改善 | プロジェクト | `cp 01-slash-commands/doc-refactor.md .claude/commands/` |
|
||||
| `/setup-ci-cd` | CI/CD パイプライン構築 | 新規プロジェクト | プロジェクト | `cp 01-slash-commands/setup-ci-cd.md .claude/commands/` |
|
||||
| `/unit-test-expand` | テストカバレッジ拡張 | テスト強化 | プロジェクト | `cp 01-slash-commands/unit-test-expand.md .claude/commands/` |
|
||||
|
||||
> **スコープ**:`ユーザー` = 個人ワークフロー(`~/.claude/commands/`)、`プロジェクト` = チーム共有(`.claude/commands/`)
|
||||
|
||||
**リファレンス**:[01-slash-commands/](01-slash-commands/) | [公式ドキュメント](https://code.claude.com/docs/en/interactive-mode)
|
||||
|
||||
**クイックインストール(全カスタムコマンド)**:
|
||||
```bash
|
||||
cp 01-slash-commands/*.md .claude/commands/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 権限モード
|
||||
|
||||
Claude Code はツール使用の許可を制御する 6 つの権限モードをサポートする。
|
||||
|
||||
| モード | 説明 | 利用シーン |
|
||||
|------|-------------|-------------|
|
||||
| `default` | ツール呼び出しごとに確認 | 標準的な対話利用 |
|
||||
| `acceptEdits` | ファイル編集を自動承認、それ以外は確認 | 信頼できる編集ワークフロー |
|
||||
| `plan` | 読み取り専用ツールのみ、書き込みなし | 計画と探索 |
|
||||
| `auto` | プロンプトなしですべてのツールを承認 | 完全自律動作(Research Preview) |
|
||||
| `bypassPermissions` | すべての権限チェックをスキップ | CI/CD、ヘッドレス環境 |
|
||||
| `dontAsk` | 権限が必要なツールをスキップ | 非対話スクリプト |
|
||||
|
||||
> **注**:`auto` モードは Research Preview 機能(2026 年 3 月)。`bypassPermissions` は信頼されたサンドボックス環境でのみ利用すること。
|
||||
|
||||
**リファレンス**:[公式ドキュメント](https://code.claude.com/docs/en/permissions)
|
||||
|
||||
---
|
||||
|
||||
## サブエージェント
|
||||
|
||||
特定タスク向けに分離コンテキストを持つ専門特化 AI アシスタント。
|
||||
|
||||
### 組み込みサブエージェント
|
||||
|
||||
| エージェント | 説明 | ツール | モデル | 利用シーン |
|
||||
|-------|-------------|-------|-------|-------------|
|
||||
| **general-purpose** | 多段タスク、調査 | 全ツール | モデル継承 | 複雑な調査、複数ファイルタスク |
|
||||
| **Plan** | 実装計画 | Read、Glob、Grep、Bash | モデル継承 | アーキテクチャ設計、計画 |
|
||||
| **Explore** | コードベース探索 | Read、Glob、Grep | Haiku 4.5 | 高速検索、コード理解 |
|
||||
| **Bash** | コマンド実行 | Bash | モデル継承 | Git 操作、ターミナル作業 |
|
||||
| **statusline-setup** | ステータスライン設定 | Bash、Read、Write | Sonnet 4.6 | ステータスライン表示の設定 |
|
||||
| **Claude Code Guide** | ヘルプとドキュメント | Read、Glob、Grep | Haiku 4.5 | ヘルプ、機能学習 |
|
||||
|
||||
### サブエージェント設定フィールド
|
||||
|
||||
| フィールド | 型 | 説明 |
|
||||
|-------|------|-------------|
|
||||
| `name` | 文字列 | エージェント識別子 |
|
||||
| `description` | 文字列 | エージェントの役割 |
|
||||
| `model` | 文字列 | モデル上書き(例:`haiku-4.5`) |
|
||||
| `tools` | 配列 | 許可ツール一覧 |
|
||||
| `effort` | 文字列 | 推論努力レベル(`low`、`medium`、`high`) |
|
||||
| `initialPrompt` | 文字列 | エージェント開始時に注入されるシステムプロンプト |
|
||||
| `disallowedTools` | 配列 | 当エージェントに明示的に禁止するツール |
|
||||
|
||||
### カスタムサブエージェント(例)
|
||||
|
||||
| エージェント | 説明 | 利用シーン | スコープ | インストール |
|
||||
|-------|-------------|-------------|-------|--------------|
|
||||
| `code-reviewer` | 包括的なコード品質 | コードレビュー | プロジェクト | `cp 04-subagents/code-reviewer.md .claude/agents/` |
|
||||
| `code-architect` | 機能アーキテクチャ設計 | 新機能計画 | プロジェクト | `cp 04-subagents/code-architect.md .claude/agents/` |
|
||||
| `code-explorer` | コードベース深掘り分析 | 既存機能の理解 | プロジェクト | `cp 04-subagents/code-explorer.md .claude/agents/` |
|
||||
| `clean-code-reviewer` | クリーンコード原則レビュー | 保守性レビュー | プロジェクト | `cp 04-subagents/clean-code-reviewer.md .claude/agents/` |
|
||||
| `test-engineer` | テスト戦略とカバレッジ | テスト計画 | プロジェクト | `cp 04-subagents/test-engineer.md .claude/agents/` |
|
||||
| `documentation-writer` | 技術ドキュメント | API ドキュメント、ガイド | プロジェクト | `cp 04-subagents/documentation-writer.md .claude/agents/` |
|
||||
| `secure-reviewer` | セキュリティ重視レビュー | セキュリティ監査 | プロジェクト | `cp 04-subagents/secure-reviewer.md .claude/agents/` |
|
||||
| `implementation-agent` | フル機能実装 | 機能開発 | プロジェクト | `cp 04-subagents/implementation-agent.md .claude/agents/` |
|
||||
| `debugger` | 根本原因分析 | バグ調査 | ユーザー | `cp 04-subagents/debugger.md .claude/agents/` |
|
||||
| `data-scientist` | SQL クエリ、データ分析 | データタスク | ユーザー | `cp 04-subagents/data-scientist.md .claude/agents/` |
|
||||
| `performance-optimizer` | プロファイリングとチューニング | ボトルネック調査 | プロジェクト | `cp 04-subagents/performance-optimizer.md .claude/agents/` |
|
||||
|
||||
> **スコープ**:`ユーザー` = 個人(`~/.claude/agents/`)、`プロジェクト` = チーム共有(`.claude/agents/`)
|
||||
|
||||
**リファレンス**:[04-subagents/](04-subagents/) | [公式ドキュメント](https://code.claude.com/docs/en/sub-agents)
|
||||
|
||||
**クイックインストール(全カスタムエージェント)**:
|
||||
```bash
|
||||
cp 04-subagents/*.md .claude/agents/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## スキル
|
||||
|
||||
指示書、スクリプト、テンプレートを伴う自動起動機能。
|
||||
|
||||
### スキル例
|
||||
|
||||
| スキル | 説明 | 自動起動の条件 | スコープ | インストール |
|
||||
|-------|-------------|-------------------|-------|--------------|
|
||||
| `code-review` | 包括的なコードレビュー | "Review this code", "Check quality" | プロジェクト | `cp -r 03-skills/code-review .claude/skills/` |
|
||||
| `brand-voice` | ブランド一貫性チェック | マーケティングコピー作成時 | プロジェクト | `cp -r 03-skills/brand-voice .claude/skills/` |
|
||||
| `doc-generator` | API ドキュメント生成 | "Generate docs", "Document API" | プロジェクト | `cp -r 03-skills/doc-generator .claude/skills/` |
|
||||
| `refactor` | 体系的リファクタリング(Martin Fowler) | "Refactor this", "Clean up code" | ユーザー | `cp -r 03-skills/refactor ~/.claude/skills/` |
|
||||
|
||||
> **スコープ**:`ユーザー` = 個人(`~/.claude/skills/`)、`プロジェクト` = チーム共有(`.claude/skills/`)
|
||||
|
||||
### スキル構造
|
||||
|
||||
```
|
||||
~/.claude/skills/skill-name/
|
||||
├── SKILL.md # スキル定義と指示
|
||||
├── scripts/ # 補助スクリプト
|
||||
└── templates/ # 出力テンプレート
|
||||
```
|
||||
|
||||
### スキルフロントマターのフィールド
|
||||
|
||||
スキルは設定のため `SKILL.md` 内で YAML フロントマターをサポートする。
|
||||
|
||||
| フィールド | 型 | 説明 |
|
||||
|-------|------|-------------|
|
||||
| `name` | 文字列 | スキル表示名 |
|
||||
| `description` | 文字列 | スキルの役割 |
|
||||
| `autoInvoke` | 配列 | 自動起動のトリガーフレーズ |
|
||||
| `effort` | 文字列 | 推論努力レベル(`low`、`medium`、`high`) |
|
||||
| `shell` | 文字列 | スクリプト実行に使うシェル(`bash`、`zsh`、`sh`) |
|
||||
|
||||
**リファレンス**:[03-skills/](03-skills/) | [公式ドキュメント](https://code.claude.com/docs/en/skills)
|
||||
|
||||
**クイックインストール(全スキル)**:
|
||||
```bash
|
||||
cp -r 03-skills/* ~/.claude/skills/
|
||||
```
|
||||
|
||||
### バンドルスキル
|
||||
|
||||
| スキル | 説明 | 自動起動の条件 |
|
||||
|-------|-------------|-------------------|
|
||||
| `/simplify` | 品質目線でコードレビュー | コード執筆後 |
|
||||
| `/batch` | 複数ファイルでプロンプト実行 | バッチ処理 |
|
||||
| `/debug` | 失敗テスト・エラーのデバッグ | デバッグセッション |
|
||||
| `/loop` | 一定間隔でプロンプト実行 | 反復タスク |
|
||||
| `/claude-api` | Claude API でアプリ構築 | API 開発 |
|
||||
|
||||
---
|
||||
|
||||
## プラグイン
|
||||
|
||||
コマンド、エージェント、MCP サーバ、フックをまとめたバンドル。
|
||||
|
||||
### プラグイン例
|
||||
|
||||
| プラグイン | 説明 | 構成要素 | 利用シーン | スコープ | インストール |
|
||||
|--------|-------------|------------|-------------|-------|--------------|
|
||||
| `pr-review` | PR レビューワークフロー | コマンド 3、エージェント 3、GitHub MCP | コードレビュー | プロジェクト | `/plugin install pr-review` |
|
||||
| `devops-automation` | デプロイと監視 | コマンド 4、エージェント 3、K8s MCP | DevOps タスク | プロジェクト | `/plugin install devops-automation` |
|
||||
| `documentation` | ドキュメント生成スイート | コマンド 4、エージェント 3、テンプレート | ドキュメント | プロジェクト | `/plugin install documentation` |
|
||||
|
||||
> **スコープ**:`プロジェクト` = チーム共有、`ユーザー` = 個人ワークフロー
|
||||
|
||||
### プラグイン構造
|
||||
|
||||
```
|
||||
.claude-plugin/
|
||||
├── plugin.json # マニフェストファイル
|
||||
├── commands/ # スラッシュコマンド
|
||||
├── agents/ # サブエージェント
|
||||
├── skills/ # スキル
|
||||
├── mcp/ # MCP 設定
|
||||
├── hooks/ # フックスクリプト
|
||||
└── scripts/ # ユーティリティスクリプト
|
||||
```
|
||||
|
||||
**リファレンス**:[07-plugins/](07-plugins/) | [公式ドキュメント](https://code.claude.com/docs/en/plugins)
|
||||
|
||||
**プラグイン管理コマンド**:
|
||||
```bash
|
||||
/plugin list # インストール済みプラグイン一覧
|
||||
/plugin install <name> # プラグインをインストール
|
||||
/plugin remove <name> # プラグインを削除
|
||||
/plugin update <name> # プラグインを更新
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## MCP サーバ
|
||||
|
||||
外部ツールおよび API アクセスのための Model Context Protocol サーバ。
|
||||
|
||||
### 一般的な MCP サーバ
|
||||
|
||||
| サーバ | 説明 | 利用シーン | スコープ | インストール |
|
||||
|--------|-------------|-------------|-------|--------------|
|
||||
| **GitHub** | PR 管理、issue、コード | GitHub ワークフロー | プロジェクト | `claude mcp add github -- npx -y @modelcontextprotocol/server-github` |
|
||||
| **Database** | SQL クエリ、データアクセス | DB 操作 | プロジェクト | `claude mcp add db -- npx -y @modelcontextprotocol/server-postgres` |
|
||||
| **Filesystem** | 高度なファイル操作 | 複雑なファイルタスク | ユーザー | `claude mcp add fs -- npx -y @modelcontextprotocol/server-filesystem` |
|
||||
| **Slack** | チームコミュニケーション | 通知、更新 | プロジェクト | 設定で構成 |
|
||||
| **Google Docs** | ドキュメントアクセス | ドキュメント編集・レビュー | プロジェクト | 設定で構成 |
|
||||
| **Asana** | プロジェクト管理 | タスク追跡 | プロジェクト | 設定で構成 |
|
||||
| **Stripe** | 決済データ | 財務分析 | プロジェクト | 設定で構成 |
|
||||
| **Memory** | 永続メモリ | セッション横断の想起 | ユーザー | 設定で構成 |
|
||||
| **Context7** | ライブラリドキュメント | 最新ドキュメント検索 | 組み込み | 組み込み |
|
||||
|
||||
> **スコープ**:`プロジェクト` = チーム(`.mcp.json`)、`ユーザー` = 個人(`~/.claude.json`)、`組み込み` = プリインストール
|
||||
|
||||
### MCP 設定例
|
||||
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"github": {
|
||||
"command": "npx",
|
||||
"args": ["-y", "@modelcontextprotocol/server-github"],
|
||||
"env": {
|
||||
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**リファレンス**:[05-mcp/](05-mcp/) | [MCP プロトコルドキュメント](https://modelcontextprotocol.io)
|
||||
|
||||
**クイックインストール(GitHub MCP)**:
|
||||
```bash
|
||||
export GITHUB_TOKEN="your_token" && claude mcp add github -- npx -y @modelcontextprotocol/server-github
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## フック
|
||||
|
||||
Claude Code のイベントでシェルコマンドを自動実行するイベント駆動の自動化。
|
||||
|
||||
### フックイベント
|
||||
|
||||
| イベント | 説明 | 発火タイミング | ユースケース |
|
||||
|-------|-------------|----------------|-----------|
|
||||
| `SessionStart` | セッション開始・再開 | セッション初期化時 | セットアップタスク |
|
||||
| `InstructionsLoaded` | 指示読み込み完了 | CLAUDE.md またはルールファイルの読込時 | カスタム指示の処理 |
|
||||
| `UserPromptSubmit` | プロンプト処理前 | ユーザーがメッセージ送信時 | 入力検証 |
|
||||
| `PreToolUse` | ツール実行前 | 任意のツールが走る前 | 検証、ログ |
|
||||
| `PermissionRequest` | 権限ダイアログ表示 | 機微な操作の前 | カスタム承認フロー |
|
||||
| `PostToolUse` | ツール成功後 | 任意のツール完了後 | 整形、通知 |
|
||||
| `PostToolUseFailure` | ツール実行失敗 | ツールエラー後 | エラー処理、ログ |
|
||||
| `Notification` | 通知送信 | Claude が通知送信時 | 外部アラート |
|
||||
| `SubagentStart` | サブエージェント生成 | サブエージェントタスク開始時 | サブエージェントコンテキスト初期化 |
|
||||
| `SubagentStop` | サブエージェント終了 | サブエージェントタスク完了時 | アクション連鎖 |
|
||||
| `Stop` | Claude が応答完了 | 応答完了時 | 後処理、レポート |
|
||||
| `StopFailure` | API エラーでターン終了 | API エラー発生時 | エラー復旧、ログ |
|
||||
| `TeammateIdle` | チームメンバーエージェントがアイドル | エージェントチーム協調時 | 作業の分配 |
|
||||
| `TaskCompleted` | タスク完了マーク | タスク完了時 | タスク後処理 |
|
||||
| `TaskCreated` | TaskCreate でタスク作成 | 新タスク作成時 | タスク追跡、ログ |
|
||||
| `ConfigChange` | 設定更新 | 設定変更時 | 設定変更への対応 |
|
||||
| `CwdChanged` | 作業ディレクトリ変更 | ディレクトリ変更時 | ディレクトリ別セットアップ |
|
||||
| `FileChanged` | 監視ファイルの変更 | ファイル変更時 | ファイル監視、再ビルド |
|
||||
| `PreCompact` | コンパクト操作前 | コンテキスト圧縮時 | 状態保全 |
|
||||
| `PostCompact` | コンパクト完了後 | コンパクト完了時 | コンパクト後アクション |
|
||||
| `WorktreeCreate` | ワークツリー作成中 | Git ワークツリー作成時 | ワークツリー環境セットアップ |
|
||||
| `WorktreeRemove` | ワークツリー削除中 | Git ワークツリー削除時 | ワークツリーリソースのクリーンアップ |
|
||||
| `Elicitation` | MCP サーバが入力を要求 | MCP elicitation 発生時 | 入力検証 |
|
||||
| `ElicitationResult` | ユーザーが elicitation に応答 | ユーザー応答時 | 応答処理 |
|
||||
| `SessionEnd` | セッション終了 | セッション終了時 | クリーンアップ、状態保存 |
|
||||
|
||||
### フック例
|
||||
|
||||
| フック | 説明 | イベント | スコープ | インストール |
|
||||
|------|-------------|-------|-------|--------------|
|
||||
| `validate-bash.py` | コマンド検証 | PreToolUse:Bash | プロジェクト | `cp 06-hooks/validate-bash.py .claude/hooks/` |
|
||||
| `security-scan.py` | セキュリティスキャン | PostToolUse:Write | プロジェクト | `cp 06-hooks/security-scan.py .claude/hooks/` |
|
||||
| `format-code.sh` | 自動整形 | PostToolUse:Write | ユーザー | `cp 06-hooks/format-code.sh ~/.claude/hooks/` |
|
||||
| `validate-prompt.py` | プロンプト検証 | UserPromptSubmit | プロジェクト | `cp 06-hooks/validate-prompt.py .claude/hooks/` |
|
||||
| `context-tracker.py` | トークン使用量追跡 | Stop | ユーザー | `cp 06-hooks/context-tracker.py ~/.claude/hooks/` |
|
||||
| `pre-commit.sh` | コミット前検証 | PreToolUse:Bash | プロジェクト | `cp 06-hooks/pre-commit.sh .claude/hooks/` |
|
||||
| `log-bash.sh` | コマンドログ | PostToolUse:Bash | ユーザー | `cp 06-hooks/log-bash.sh ~/.claude/hooks/` |
|
||||
| `dependency-check.sh` | マニフェスト変更時の脆弱性スキャン | PostToolUse:Write | プロジェクト | `cp 06-hooks/dependency-check.sh .claude/hooks/` |
|
||||
|
||||
> **スコープ**:`プロジェクト` = チーム(`.claude/settings.json`)、`ユーザー` = 個人(`~/.claude/settings.json`)
|
||||
|
||||
### フック設定
|
||||
|
||||
```json
|
||||
{
|
||||
"hooks": {
|
||||
"PreToolUse": [
|
||||
{
|
||||
"matcher": "Bash",
|
||||
"command": "~/.claude/hooks/validate-bash.py"
|
||||
}
|
||||
],
|
||||
"PostToolUse": [
|
||||
{
|
||||
"matcher": "Write",
|
||||
"command": "~/.claude/hooks/format-code.sh"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**リファレンス**:[06-hooks/](06-hooks/) | [公式ドキュメント](https://code.claude.com/docs/en/hooks)
|
||||
|
||||
**クイックインストール(全フック)**:
|
||||
```bash
|
||||
mkdir -p ~/.claude/hooks && cp 06-hooks/*.sh ~/.claude/hooks/ && chmod +x ~/.claude/hooks/*.sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## メモリファイル
|
||||
|
||||
セッション横断で自動読み込みされる永続コンテキスト。
|
||||
|
||||
### メモリの種類
|
||||
|
||||
| 種類 | 配置場所 | スコープ | 利用シーン |
|
||||
|------|----------|-------|-------------|
|
||||
| **マネージドポリシー** | 組織管理ポリシー | 組織 | 組織全体の標準を強制 |
|
||||
| **プロジェクト** | `./CLAUDE.md` | プロジェクト(チーム) | チーム規約、プロジェクト文脈 |
|
||||
| **プロジェクトルール** | `.claude/rules/` | プロジェクト(チーム) | モジュール化されたプロジェクトルール |
|
||||
| **ユーザー** | `~/.claude/CLAUDE.md` | ユーザー(個人) | 個人の好み |
|
||||
| **ユーザールール** | `~/.claude/rules/` | ユーザー(個人) | モジュール化された個人ルール |
|
||||
| **ローカル** | `./CLAUDE.local.md` | ローカル(git 無視) | マシン固有の上書き(2026 年 3 月時点で公式ドキュメントに記載なし、レガシーの可能性) |
|
||||
| **Auto Memory** | 自動 | セッション | 自動取得された洞察と訂正 |
|
||||
|
||||
> **スコープ**:`組織` = 管理者管理、`プロジェクト` = git でチーム共有、`ユーザー` = 個人の好み、`ローカル` = コミット非対象、`セッション` = 自動管理
|
||||
|
||||
**リファレンス**:[02-memory/](02-memory/) | [公式ドキュメント](https://code.claude.com/docs/en/memory)
|
||||
|
||||
**クイックインストール**:
|
||||
```bash
|
||||
cp 02-memory/project-CLAUDE.md ./CLAUDE.md
|
||||
cp 02-memory/personal-CLAUDE.md ~/.claude/CLAUDE.md
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 新機能(2026 年 4 月)
|
||||
|
||||
| 機能 | 説明 | 使い方 |
|
||||
|---------|-------------|------------|
|
||||
| **/focus** | 注意散漫を防ぐ出力表示のためのフォーカスビュー切替(v2.1.110) | `/focus` で長時間タスク中の視覚的ノイズを低減 |
|
||||
| **/proactive** | `/loop` のエイリアス — 同じ反復タスク動作(v2.1.105) | `/proactive` を `/loop` と互換に利用 |
|
||||
| **/recap** | 既存セッションに戻ったときに要約を表示(v2.1.108) | 離席後に `/recap` を実行して文脈を取り戻す |
|
||||
| **/tui** | フルスクリーン TUI モードを切替してちらつきのない描画(v2.1.110) | フルスクリーンターミナルや tmux で `/tui` を使う |
|
||||
| **/undo** | `/rewind` のエイリアス — 直前のチェックポイントへ戻す(v2.1.108) | `/undo` を `/rewind` と互換に利用 |
|
||||
| **Monitor ツール** | バックグラウンドコマンドの stdout を監視し、ポーリングではなくイベントで反応(v2.1.98+) | [高度な機能](09-advanced-features/) 経由で Monitor ツールを利用 |
|
||||
| **/team-onboarding** | プロジェクトの Claude Code 設定からオンボーディングガイドを自動生成(v2.1.101) | プロジェクトで `/team-onboarding` を実行 |
|
||||
| **Ultraplan 自動作成** | 初回 `/ultraplan` 実行時にクラウド環境を自動作成、手動セットアップ不要(v2.1.101) | `/ultraplan <prompt>` を使う |
|
||||
| **リモートコントロール** | API 経由で Claude Code セッションを遠隔制御 | リモートコントロール API でプロンプト送信と応答取得をプログラム的に行う |
|
||||
| **Web セッション** | ブラウザベース環境で Claude Code を実行 | `claude web` または Anthropic Console でアクセス |
|
||||
| **デスクトップアプリ** | Claude Code のネイティブデスクトップアプリ | `/desktop` または Anthropic サイトからダウンロード |
|
||||
| **Agent Teams** | 関連タスクで複数エージェントを協調 | コラボレーションと文脈共有を行う teammate エージェントを設定 |
|
||||
| **タスクリスト** | バックグラウンドタスクの管理と監視 | `/tasks` でバックグラウンド処理を表示・管理 |
|
||||
| **プロンプト候補** | コンテキスト依存のコマンド候補 | 現在の文脈に応じて候補が自動表示 |
|
||||
| **Git ワークツリー** | 並列開発のための隔離 git ワークツリー | ワークツリーコマンドで安全な並列ブランチ作業 |
|
||||
| **サンドボックス化** | 安全のための隔離実行環境 | `/sandbox` で切替、制限環境内でコマンドを実行 |
|
||||
| **MCP OAuth** | MCP サーバ向け OAuth 認証 | 安全なアクセスのため MCP サーバ設定で OAuth 認証情報を構成 |
|
||||
| **MCP ツール検索** | MCP ツールを動的に検索・発見 | 接続済みサーバ全体で利用可能な MCP ツールを検索 |
|
||||
| **スケジュールタスク** | `/loop` および cron ツールで反復タスクを設定 | `/loop 5m /command` または CronCreate ツールを使う |
|
||||
| **Chrome 連携** | ヘッドレス Chromium によるブラウザ自動化 | `--chrome` フラグまたは `/chrome` コマンドを使う |
|
||||
| **キーバインドカスタマイズ** | コード対応を含むキーバインドのカスタマイズ | `/keybindings` を使うか `~/.claude/keybindings.json` を編集 |
|
||||
| **Auto Mode** | 権限プロンプトなしの完全自律動作(Research Preview) | `--mode auto` または `/permissions auto` を使う、2026 年 3 月 |
|
||||
| **チャンネル** | 複数チャネル通信(Telegram、Slack など)(Research Preview) | チャンネルプラグインを設定、2026 年 3 月 |
|
||||
| **音声入力** | プロンプトの音声入力 | マイクアイコンまたは音声キーバインドを使う |
|
||||
| **Agent フック種別** | シェルコマンド実行ではなくサブエージェントを生成するフック | フック設定で `"type": "agent"` を指定 |
|
||||
| **Prompt フック種別** | プロンプトテキストを会話に注入するフック | フック設定で `"type": "prompt"` を指定 |
|
||||
| **MCP Elicitation** | MCP サーバがツール実行中にユーザー入力を要求できる | `Elicitation` および `ElicitationResult` フックイベントで処理 |
|
||||
| **プラグイン LSP サポート** | プラグイン経由の Language Server Protocol 統合 | エディタ機能のため `plugin.json` で LSP サーバを設定 |
|
||||
| **マネージド Drop-in** | 組織管理のドロップイン設定(v2.1.83) | 管理ポリシーで管理者が設定、全ユーザーに自動適用 |
|
||||
|
||||
---
|
||||
|
||||
## クイックリファレンスマトリクス
|
||||
|
||||
### 機能選定ガイド
|
||||
|
||||
| 必要なもの | 推奨機能 | 理由 |
|
||||
|------|---------------------|-----|
|
||||
| 高速ショートカット | スラッシュコマンド | 手動、即時 |
|
||||
| 永続コンテキスト | メモリ | 自動読み込み |
|
||||
| 複雑な自動化 | スキル | 自動起動 |
|
||||
| 専門タスク | サブエージェント | コンテキスト分離 |
|
||||
| 外部データ | MCP サーバ | リアルタイムアクセス |
|
||||
| イベント自動化 | フック | イベントトリガー |
|
||||
| 完全ソリューション | プラグイン | オールインワン |
|
||||
|
||||
### インストール優先順位
|
||||
|
||||
| 優先度 | 機能 | コマンド |
|
||||
|----------|---------|---------|
|
||||
| 1. 必須 | メモリ | `cp 02-memory/project-CLAUDE.md ./CLAUDE.md` |
|
||||
| 2. 日常利用 | スラッシュコマンド | `cp 01-slash-commands/*.md .claude/commands/` |
|
||||
| 3. 品質 | サブエージェント | `cp 04-subagents/*.md .claude/agents/` |
|
||||
| 4. 自動化 | フック | `cp 06-hooks/*.sh ~/.claude/hooks/ && chmod +x ~/.claude/hooks/*.sh` |
|
||||
| 5. 外部 | MCP | `claude mcp add github -- npx -y @modelcontextprotocol/server-github` |
|
||||
| 6. 高度 | スキル | `cp -r 03-skills/* ~/.claude/skills/` |
|
||||
| 7. 完全 | プラグイン | `/plugin install pr-review` |
|
||||
|
||||
---
|
||||
|
||||
## ワンコマンド完全インストール
|
||||
|
||||
このリポジトリの全例題をインストールする:
|
||||
|
||||
```bash
|
||||
# ディレクトリを作成
|
||||
mkdir -p .claude/{commands,agents,skills} ~/.claude/{hooks,skills}
|
||||
|
||||
# 全機能をインストール
|
||||
cp 01-slash-commands/*.md .claude/commands/ && \
|
||||
cp 02-memory/project-CLAUDE.md ./CLAUDE.md && \
|
||||
cp -r 03-skills/* ~/.claude/skills/ && \
|
||||
cp 04-subagents/*.md .claude/agents/ && \
|
||||
cp 06-hooks/*.sh ~/.claude/hooks/ && \
|
||||
chmod +x ~/.claude/hooks/*.sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 追加リソース
|
||||
|
||||
- [Claude Code 公式ドキュメント](https://code.claude.com/docs/en/overview)
|
||||
- [MCP プロトコル仕様](https://modelcontextprotocol.io)
|
||||
- [学習ロードマップ](LEARNING-ROADMAP.md)
|
||||
- [メイン README](README.md)
|
||||
|
||||
---
|
||||
|
||||
**最終更新**:2026 年 4 月 24 日
|
||||
**Claude Code バージョン**:2.1.119
|
||||
**情報源**:
|
||||
- https://code.claude.com/docs/en/overview
|
||||
- https://code.claude.com/docs/en/commands
|
||||
- https://code.claude.com/docs/en/hooks
|
||||
- https://github.com/anthropics/claude-code/releases/tag/v2.1.118
|
||||
**互換モデル**:Claude Sonnet 4.6、Claude Opus 4.7、Claude Haiku 4.5
|
||||
+192
@@ -0,0 +1,192 @@
|
||||
<!-- i18n-source: CHANGELOG.md -->
|
||||
<!-- i18n-source-sha: cf92e8e -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
# 変更履歴
|
||||
|
||||
## v2.1.112 — 2026-04-16
|
||||
|
||||
### ハイライト
|
||||
|
||||
- すべての英語チュートリアルを Claude Code v2.1.112 および新しい Opus 4.7 モデル(`claude-opus-4-7`)に同期。Opus 4.7 でデフォルトとなる新しい `xhigh` エフォートレベル(`high` と `max` の中間)、2 つの新しい組み込みスラッシュコマンド(`/ultrareview`、`/less-permission-prompts`)、Opus 4.7 の Max サブスクライバー向けに `--enable-auto-mode` を不要としたオートモード、Windows の PowerShell ツール、「Auto(ターミナルに合わせる)」テーマ、およびプロンプト名で命名されるプランファイルを反映。18 件の英語ドキュメントのフッターを Claude Code v2.1.112 に更新。@Luong NGUYEN
|
||||
|
||||
### 機能
|
||||
|
||||
- 全モジュール、ルートドキュメント、サンプル、リファレンスにわたるウクライナ語(uk)ローカライズを完全追加(039dde2)@Evgenij I
|
||||
|
||||
### バグ修正
|
||||
|
||||
- pre-tool-check.sh フックのプロトコルバグを修正(bce7cf8)@yarlinghe
|
||||
- CI を通すため不正な mermaid サンプルをテキストブロックに変更(b8a7b1f)@Evgenij I
|
||||
- ウクライナ語版 claude_concepts_guide.md の目次における CP1251 エンコード問題を修正(d970cc6)@Evgenij I
|
||||
- スタブのウクライナ語 README を完全翻訳に置き換え、壊れたアンカーを修正(f6d73e2)@Evgenij I
|
||||
- 全フッターの Claude Code バージョンを 2.1.97 に統一(63a1416)@Luong NGUYEN
|
||||
- 2026-04-09 のドキュメント正確性アップデートを適用(e015f39)@Luong NGUYEN
|
||||
|
||||
### ドキュメント
|
||||
|
||||
- Claude Code v2.1.112 に同期(Opus 4.7、`xhigh` エフォート、`/ultrareview`、`/less-permission-prompts`、PowerShell ツール、Auto-match-terminal テーマ)@Luong NGUYEN
|
||||
- Claude Code v2.1.110 に同期(TUI、プッシュ通知、セッションリキャップ)(15f0085)@Luong NGUYEN
|
||||
- Claude Code v2.1.101 に同期(`/team-onboarding`、`/ultraplan`、Monitor ツール)(2deba3a)@Luong NGUYEN
|
||||
- ベトナム語ドキュメントを英語ソースに同期(561c6cb)@Thiên Toán
|
||||
- 全ファイルの Last Updated 日付と Claude Code バージョンを更新(7f2e773)@Luong NGUYEN
|
||||
- 言語切替えにウクライナ語へのリンクを追加(9c224ff)@Luong NGUYEN
|
||||
- コントリビューターセクションを削除(f07313d)@Luong NGUYEN
|
||||
- GitHub メトリクスを 21,800+ stars、2,585+ forks に更新(4f55374)@Luong NGUYEN
|
||||
|
||||
**Full Changelog**: https://github.com/luongnv89/claude-howto/compare/v2.3.0...v2.1.112
|
||||
|
||||
---
|
||||
|
||||
## v2.3.0 — 2026-04-07
|
||||
|
||||
### 機能
|
||||
|
||||
- 言語ごとの EPUB アーティファクトをビルド・公開(90e9c30)@Thiên Toán
|
||||
- 不足していた pre-tool-check.sh フックを 06-hooks に追加(b511ed1)@JiayuWang
|
||||
- zh/ ディレクトリに中国語翻訳を追加(89e89d4)@Luong NGUYEN
|
||||
- performance-optimizer サブエージェントと dependency-check フックを追加(f53d080)@qk
|
||||
|
||||
### バグ修正
|
||||
|
||||
- Windows Git Bash 互換性 + stdin JSON プロトコル(2cbb10c)@Luong NGUYEN
|
||||
- 08-checkpoints の autoCheckpoint 設定ドキュメントを修正(749c79f)@JiayuWang
|
||||
- プレースホルダー置換の代わりに SVG 画像を埋め込み(1b16709)@Thiên Toán
|
||||
- memory README におけるネストされたコードフェンスのレンダリングを修正(ce24423)@Zhaoshan Duan
|
||||
- squash merge により失われたレビュー修正を再適用(34259ca)@Luong NGUYEN
|
||||
- フックスクリプトを Windows Git Bash 互換にし、stdin JSON プロトコルを使用(107153d)@binyu li
|
||||
|
||||
### ドキュメント
|
||||
|
||||
- 全チュートリアルを Claude Code 最新ドキュメント(2026 年 4 月)に同期(72d3b01)@Luong NGUYEN
|
||||
- 言語切替えに中国語へのリンクを追加(6cbaa4d)@Luong NGUYEN
|
||||
- 英語とベトナム語の言語切替えを追加(100c45e)@Luong NGUYEN
|
||||
- GitHub #1 Trending バッジを追加(0ca8c37)@Luong NGUYEN
|
||||
- コンテキストゾーン監視のための cc-context-stats を導入(d41b335)@Luong NGUYEN
|
||||
- luongnv89/skills コレクションと luongnv89/asm スキルマネージャを導入(7e3c0b6)@Luong NGUYEN
|
||||
- README の統計情報を最新の GitHub メトリクス(5,900+ stars、690+ forks)に更新(5001525)@Luong NGUYEN
|
||||
- README の統計情報を最新の GitHub メトリクス(3,900+ stars、460+ forks)に更新(9cb92d6)@Luong NGUYEN
|
||||
|
||||
### リファクタリング
|
||||
|
||||
- Kroki HTTP 依存をローカルの mmdc レンダリングに置き換え(e76bbe4)@Luong NGUYEN
|
||||
- 品質チェックを pre-commit に前倒しし、CI を 2 回目のパスとする(6d1e0ae)@Luong NGUYEN
|
||||
- オートモードの権限ベースラインを絞り込み(2790fb2)@Luong NGUYEN
|
||||
- auto-adapt フックをワンタイム権限セットアップスクリプトに置き換え(995a5d6)@Luong NGUYEN
|
||||
|
||||
### その他
|
||||
|
||||
- 品質ゲートのシフトレフト — pre-commit に mypy を追加し、CI 失敗を修正(699fb39)@Luong NGUYEN
|
||||
- ベトナム語(Tiếng Việt)ローカライズを追加(a70777e)@Thiên Toán
|
||||
|
||||
**Full Changelog**: https://github.com/luongnv89/claude-howto/compare/v2.2.0...v2.3.0
|
||||
|
||||
---
|
||||
|
||||
## v2.2.0 — 2026-03-26
|
||||
|
||||
### ドキュメント
|
||||
|
||||
- 全チュートリアルとリファレンスを Claude Code v2.1.84 に同期(f78c094)@luongnv89
|
||||
- スラッシュコマンドを 55+ 個の組み込み + 5 個のバンドルスキルに更新、3 個を非推奨としてマーク
|
||||
- フックイベントを 18 から 25 に拡張、`agent` フックタイプを追加(4 タイプに)
|
||||
- Auto Mode、Channels、Voice Dictation を高度な機能に追加
|
||||
- スキル frontmatter に `effort`、`shell` フィールドを追加;エージェントに `initialPrompt`、`disallowedTools` フィールドを追加
|
||||
- WebSocket MCP トランスポート、エリシテーション、2KB ツール上限を追加
|
||||
- プラグインの LSP サポート、`userConfig`、`${CLAUDE_PLUGIN_DATA}` を追加
|
||||
- 全リファレンスドキュメント(CATALOG、QUICK_REFERENCE、LEARNING-ROADMAP、INDEX)を更新
|
||||
- README をランディングページ構成のガイドに書き直し(32a0776)@luongnv89
|
||||
|
||||
### バグ修正
|
||||
|
||||
- CI 準拠のため不足していた cSpell 単語と README セクションを追加(93f9d51)@luongnv89
|
||||
- cSpell 辞書に `Sandboxing` を追加(b80ce6f)@luongnv89
|
||||
|
||||
**Full Changelog**: https://github.com/luongnv89/claude-howto/compare/v2.1.1...v2.2.0
|
||||
|
||||
---
|
||||
|
||||
## v2.1.1 — 2026-03-13
|
||||
|
||||
### バグ修正
|
||||
|
||||
- CI のリンクチェックで失敗するデッドマーケットプレイスリンクを削除(3fdf0d6)@luongnv89
|
||||
- cSpell 辞書に `sandboxed` と `pycache` を追加(dc64618)@luongnv89
|
||||
|
||||
**Full Changelog**: https://github.com/luongnv89/claude-howto/compare/v2.1.0...v2.1.1
|
||||
|
||||
---
|
||||
|
||||
## v2.1.0 — 2026-03-13
|
||||
|
||||
### 機能
|
||||
|
||||
- セルフアセスメントとレッスンクイズスキルによる適応学習パスを追加(1ef46cd)@luongnv89
|
||||
- `/self-assessment` — 10 個の機能領域にわたる対話型習熟度クイズと個別最適化された学習パス
|
||||
- `/lesson-quiz [lesson]` — 8〜10 問の的を絞った質問によるレッスンごとの知識チェック
|
||||
|
||||
### バグ修正
|
||||
|
||||
- 壊れた URL、非推奨化、古いリファレンスを更新(8fe4520)@luongnv89
|
||||
- リソースおよび self-assessment スキル内の壊れたリンクを修正(7a05863)@luongnv89
|
||||
- concepts ガイドのネストされたコードブロックにチルダフェンスを使用(5f82719)@VikalpP
|
||||
- cSpell 辞書に不足していた単語を追加(8df7572)@luongnv89
|
||||
|
||||
### ドキュメント
|
||||
|
||||
- フェーズ 5 QA — ドキュメント全体の整合性、URL、用語を修正(00bbe4c)@luongnv89
|
||||
- フェーズ 3〜4 完了 — 新機能のカバレッジとリファレンスドキュメントの更新(132de29)@luongnv89
|
||||
- MCP コンテキスト肥大化セクションに MCPorter ランタイムを追加(ef52705)@luongnv89
|
||||
- 6 つのガイドに不足していたコマンド、機能、設定を追加(4bc8f15)@luongnv89
|
||||
- 既存リポジトリ規約に基づくスタイルガイドを追加(84141d0)@luongnv89
|
||||
- ガイド比較表に self-assessment 行を追加(8fe0c96)@luongnv89
|
||||
- PR #7 のため VikalpP をコントリビューターリストに追加(d5b4350)@luongnv89
|
||||
- self-assessment と lesson-quiz スキルへの参照を README とロードマップに追加(d5a6106)@luongnv89
|
||||
|
||||
### 新規コントリビュータ
|
||||
|
||||
- @VikalpP が #7 で初コントリビュート
|
||||
|
||||
**Full Changelog**: https://github.com/luongnv89/claude-howto/compare/v2.0.0...v2.1.0
|
||||
|
||||
---
|
||||
|
||||
## v2.0.0 — 2026-02-01
|
||||
|
||||
### 機能
|
||||
|
||||
- 全ドキュメントを Claude Code 2026 年 2 月の機能に同期(487c96d)
|
||||
- 10 個のチュートリアルディレクトリと 7 個のリファレンスドキュメントにまたがる 26 ファイルを更新
|
||||
- **Auto Memory**(プロジェクトごとの永続的な学習)のドキュメントを追加
|
||||
- **Remote Control**、**Web Sessions**、**Desktop App** のドキュメントを追加
|
||||
- **Agent Teams**(実験的なマルチエージェント協調)のドキュメントを追加
|
||||
- **MCP OAuth 2.0**、**Tool Search**、**Claude.ai Connectors** のドキュメントを追加
|
||||
- サブエージェントの **Persistent Memory** と **Worktree Isolation** のドキュメントを追加
|
||||
- **Background Subagents**、**Task List**、**Prompt Suggestions** のドキュメントを追加
|
||||
- **Sandboxing** と **Managed Settings**(Enterprise)のドキュメントを追加
|
||||
- **HTTP Hooks** と 7 個の新しいフックイベントのドキュメントを追加
|
||||
- **Plugin Settings**、**LSP Servers**、Marketplace アップデートのドキュメントを追加
|
||||
- **Summarize from Checkpoint** リワインドオプションのドキュメントを追加
|
||||
- 17 個の新スラッシュコマンド(`/fork`、`/desktop`、`/teleport`、`/tasks`、`/fast` など)をドキュメント化
|
||||
- 新しい CLI フラグ(`--worktree`、`--from-pr`、`--remote`、`--teleport`、`--teammate-mode` など)をドキュメント化
|
||||
- オートメモリ、エフォートレベル、エージェントチームなどに関する新しい環境変数をドキュメント化
|
||||
|
||||
### デザイン
|
||||
|
||||
- ロゴをコンパス・ブラケットマークと最小限のパレットに刷新(20779db)
|
||||
|
||||
### バグ修正 / 訂正
|
||||
|
||||
- モデル名を更新:Sonnet 4.5 → **Sonnet 4.6**、Opus 4.5 → **Opus 4.6**
|
||||
- 権限モード名を修正:架空の「Unrestricted/Confirm/Read-only」を実在する `default`/`acceptEdits`/`plan`/`dontAsk`/`bypassPermissions` に置換
|
||||
- フックイベントを修正:架空の `PreCommit`/`PostCommit`/`PrePush` を削除し、実在のイベント(`SubagentStart`、`WorktreeCreate`、`ConfigChange` など)を追加
|
||||
- CLI 構文を修正:`claude-code --headless` を `claude -p`(print mode)に置換
|
||||
- チェックポイントコマンドを修正:架空の `/checkpoint save/list/rewind/diff` を実在の `Esc+Esc` / `/rewind` インターフェースに置換
|
||||
- セッション管理を修正:架空の `/session list/new/switch/save` を実在の `/resume`/`/rename`/`/fork` に置換
|
||||
- プラグインマニフェスト形式を修正:`plugin.yaml` → `.claude-plugin/plugin.json`
|
||||
- MCP 設定パスを修正:`~/.claude/mcp.json` → `.mcp.json`(プロジェクト)/ `~/.claude.json`(ユーザー)
|
||||
- ドキュメント URL を修正:`docs.claude.com` → `docs.anthropic.com`;架空の `plugins.claude.com` を削除
|
||||
- 複数ファイルにわたる架空の設定フィールドを削除
|
||||
- 全ファイルの "Last Updated" 日付を 2026 年 2 月に更新
|
||||
|
||||
**Full Changelog**: https://github.com/luongnv89/claude-howto/compare/20779db...v2.0.0
|
||||
+161
@@ -0,0 +1,161 @@
|
||||
<!-- i18n-source: CLAUDE.md -->
|
||||
<!-- i18n-source-sha: a70777e -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
# CLAUDE.md
|
||||
|
||||
このファイルは、本リポジトリ内のコードを扱う際の Claude Code(claude.ai/code)向けガイドである。
|
||||
|
||||
## プロジェクト概要
|
||||
|
||||
Claude How To は Claude Code 機能のチュートリアルリポジトリである。これは **ドキュメント・アズ・コード** であり、主な成果物は実行可能アプリケーションではなく、番号付きの学習モジュールに整理された Markdown ファイルである。
|
||||
|
||||
**アーキテクチャ:** 各モジュール(01〜10)は Claude Code の特定の機能を、コピー&ペースト可能なテンプレート、Mermaid 図、サンプルとともに解説する。ビルドシステムはドキュメントの品質を検証し、EPUB 電子書籍を生成する。
|
||||
|
||||
## よく使うコマンド
|
||||
|
||||
### pre-commit 品質チェック
|
||||
|
||||
すべてのドキュメントは、コミット前に 4 つの品質チェックを通過しなければならない(pre-commit フックで自動実行される):
|
||||
|
||||
```bash
|
||||
# pre-commit フックをインストール(毎コミットで実行)
|
||||
pre-commit install
|
||||
|
||||
# 全チェックを手動で実行
|
||||
pre-commit run --all-files
|
||||
```
|
||||
|
||||
4 つのチェックは以下のとおり:
|
||||
1. **markdown-lint** — `markdownlint` による Markdown 構造とフォーマット
|
||||
2. **cross-references** — 内部リンク、アンカー、コードフェンスの構文(Python スクリプト)
|
||||
3. **mermaid-syntax** — すべての Mermaid 図が正しくパースされるかを検証(Python スクリプト)
|
||||
4. **link-check** — 外部 URL が到達可能か(Python スクリプト)
|
||||
5. **build-epub** — EPUB がエラーなく生成されるか(`.md` 変更時)
|
||||
|
||||
### 開発環境のセットアップ
|
||||
|
||||
```bash
|
||||
# uv(Python パッケージマネージャ)をインストール
|
||||
pip install uv
|
||||
|
||||
# 仮想環境を作成して Python 依存関係をインストール
|
||||
uv venv
|
||||
source .venv/bin/activate
|
||||
uv pip install -r scripts/requirements-dev.txt
|
||||
|
||||
# Node.js ツール(Markdown リンタと Mermaid バリデータ)をインストール
|
||||
npm install -g markdownlint-cli
|
||||
npm install -g @mermaid-js/mermaid-cli
|
||||
|
||||
# pre-commit フックをインストール
|
||||
uv pip install pre-commit
|
||||
pre-commit install
|
||||
```
|
||||
|
||||
### テスト
|
||||
|
||||
`scripts/` 内の Python スクリプトはユニットテストを持つ:
|
||||
|
||||
```bash
|
||||
# 全テストを実行
|
||||
pytest scripts/tests/ -v
|
||||
|
||||
# カバレッジ付きで実行
|
||||
pytest scripts/tests/ -v --cov=scripts --cov-report=html
|
||||
|
||||
# 特定のテストを実行
|
||||
pytest scripts/tests/test_build_epub.py -v
|
||||
```
|
||||
|
||||
### コード品質
|
||||
|
||||
```bash
|
||||
# Python コードをリント・整形
|
||||
ruff check scripts/
|
||||
ruff format scripts/
|
||||
|
||||
# セキュリティスキャン
|
||||
bandit -c scripts/pyproject.toml -r scripts/ --exclude scripts/tests/
|
||||
|
||||
# 型チェック
|
||||
mypy scripts/ --ignore-missing-imports
|
||||
```
|
||||
|
||||
### EPUB ビルド
|
||||
|
||||
```bash
|
||||
# 電子書籍を生成(Mermaid 図を Kroki.io API でレンダリング)
|
||||
uv run scripts/build_epub.py
|
||||
|
||||
# オプション付き
|
||||
uv run scripts/build_epub.py --verbose --output custom-name.epub --max-concurrent 5
|
||||
```
|
||||
|
||||
## ディレクトリ構造
|
||||
|
||||
```
|
||||
├── 01-slash-commands/ # ユーザーが起動するショートカット
|
||||
├── 02-memory/ # 永続コンテキストの例
|
||||
├── 03-skills/ # 再利用可能な能力
|
||||
├── 04-subagents/ # 専門 AI アシスタント
|
||||
├── 05-mcp/ # Model Context Protocol の例
|
||||
├── 06-hooks/ # イベント駆動の自動化
|
||||
├── 07-plugins/ # バンドル機能
|
||||
├── 08-checkpoints/ # セッションのスナップショット
|
||||
├── 09-advanced-features/ # プランニング、シンキング、バックグラウンド
|
||||
├── 10-cli/ # CLI リファレンス
|
||||
├── scripts/
|
||||
│ ├── build_epub.py # EPUB ジェネレータ(Mermaid を Kroki API でレンダリング)
|
||||
│ ├── check_cross_references.py # 内部リンクを検証
|
||||
│ ├── check_links.py # 外部 URL を検証
|
||||
│ ├── check_mermaid.py # Mermaid 構文を検証
|
||||
│ └── tests/ # スクリプトのユニットテスト
|
||||
├── .pre-commit-config.yaml # 品質チェック定義
|
||||
└── README.md # メインガイド(モジュール索引も兼ねる)
|
||||
```
|
||||
|
||||
## コンテンツ作成ガイド
|
||||
|
||||
### モジュール構造
|
||||
番号付きフォルダはいずれも以下のパターンに従う:
|
||||
- **README.md** — 機能の概要と例
|
||||
- **サンプルファイル** — コピー&ペースト可能なテンプレート(コマンドは `.md`、設定は `.json`、フックは `.sh`)
|
||||
- ファイルは機能の複雑さと依存関係に従って整理されている
|
||||
|
||||
### Mermaid 図
|
||||
- すべての図は正常にパースできること(pre-commit フックで検査)
|
||||
- EPUB ビルドは Kroki.io API で図をレンダリングする(インターネット接続が必要)
|
||||
- フローチャート、シーケンス図、アーキテクチャ可視化に Mermaid を使用する
|
||||
|
||||
### 相互参照
|
||||
- 内部リンクは相対パスを使う(例:`(01-slash-commands/README.md)`)
|
||||
- コードフェンスは言語指定が必須(例:` ```bash `、` ```python `)
|
||||
- アンカーリンクは `#heading-name` 形式
|
||||
|
||||
### リンク検証
|
||||
- 外部 URL は到達可能であること(pre-commit フックで検査)
|
||||
- 一時的なコンテンツへのリンクは避ける
|
||||
- 可能な限りパーマリンクを使用する
|
||||
|
||||
## 主要なアーキテクチャ上のポイント
|
||||
|
||||
1. **番号付きフォルダは学習順序を示す** — 01〜10 のプレフィックスは Claude Code 機能の推奨学習順序を表す。この番号付けは意図的なものなので、アルファベット順に並べ替えてはならない。
|
||||
|
||||
2. **スクリプトはユーティリティであり製品ではない** — `scripts/` の Python スクリプトはドキュメント品質と EPUB 生成を支援するものである。実際のコンテンツは番号付きモジュールフォルダにある。
|
||||
|
||||
3. **pre-commit がゲートキーパー** — PR が承認される前に 4 つの品質チェックがすべて通過しなければならない。CI パイプラインは同じチェックを 2 回目のパスとして実行する。
|
||||
|
||||
4. **Mermaid のレンダリングにはネットワークが必要** — EPUB ビルドは図のレンダリングに Kroki.io API を呼び出す。ここでビルドが失敗する場合は、ネットワーク問題か Mermaid 構文エラーが典型的な原因である。
|
||||
|
||||
5. **これはチュートリアルでありライブラリではない** — コンテンツを追加する際は、明快な解説、コピー&ペースト可能な例、視覚的な図を重視する。価値は概念を教えることにあり、再利用可能なコードを提供することではない。
|
||||
|
||||
## コミット規約
|
||||
|
||||
Conventional Commits 形式に従う:
|
||||
- `feat(slash-commands): Add API documentation generator`
|
||||
- `docs(memory): Improve personal preferences example`
|
||||
- `fix(README): Correct table of contents link`
|
||||
- `refactor(hooks): Simplify hook configuration examples`
|
||||
|
||||
スコープは該当するフォルダ名に合わせる。
|
||||
@@ -0,0 +1,224 @@
|
||||
<!-- i18n-source: CODE_OF_CONDUCT.md -->
|
||||
<!-- i18n-source-sha: 7f2e773 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
# コントリビュータ行動規範
|
||||
|
||||
## 私たちのコミットメント
|
||||
|
||||
私たちは、すべての人にとって温かく、刺激に満ちたコミュニティを提供することにコミットしている。年齢、体格、カースト、障害、民族、性別特性、ジェンダーアイデンティティと表現、経験のレベル、教育、社会経済的地位、国籍、外見、人種、宗教、性的アイデンティティと指向にかかわらず、コミュニティへの参加が誰にとってもハラスメントのない体験となることを誓う。
|
||||
|
||||
私たちは、すべてのコントリビュータが尊重され、評価され、最善の仕事を行えるよう、ポジティブで、包摂的で、安全な環境を提供することに努める。
|
||||
|
||||
## 私たちの基準
|
||||
|
||||
ポジティブな環境作りに貢献する行動の例:
|
||||
|
||||
### 敬意を払う
|
||||
- 温かく包摂的な言葉遣いを使う
|
||||
- 異なる意見、視点、経験を尊重する
|
||||
- 建設的な批判を快く受け入れる
|
||||
- 文化的・言語的な違いを尊重する
|
||||
- 多様な背景を認め、称える
|
||||
|
||||
### 協力する
|
||||
- 衝突を解決するために協働する
|
||||
- 他者の貢献にクレジットを与え、認める
|
||||
- 他者の学びと成長を助ける
|
||||
- 知識を共有し、質問する
|
||||
- 仲間のコミュニティメンバーを支える
|
||||
|
||||
### プロフェッショナルである
|
||||
- 議論は焦点を絞り、生産的に保つ
|
||||
- 見下したり侮辱したりする発言を避ける
|
||||
- Issue や議論ではトピックから外れない
|
||||
- 明確で敬意のあるコミュニケーションを使う
|
||||
- 相手のメッセージに善意を仮定する
|
||||
|
||||
### 包摂的である
|
||||
- 新しいコントリビュータを歓迎する
|
||||
- プロジェクトに新しい人のオンボーディングを助ける
|
||||
- 建設的なフィードバックを提供する
|
||||
- 異なる視点を持つ人々を含める
|
||||
- 静かな声が聞かれる空間を作る
|
||||
|
||||
## 受け入れがたい行動
|
||||
|
||||
以下の行動はハラスメントとみなされ、コミュニティ内では受け入れられない:
|
||||
|
||||
### ハラスメントと差別
|
||||
- 性別、ジェンダーアイデンティティと表現、性的指向、障害、精神疾患、神経学的(非)定型性、外見、体格、年齢、人種、宗教に関連する不快なコメント
|
||||
- 個人のライフスタイルの選択や慣行に関する歓迎されないコメント
|
||||
- 故意の誤った性別呼称、または「デッドネーム」や拒否された名前の使用
|
||||
- 不必要または無関係な性的画像や行動
|
||||
- 同意のない、または停止を求められた後の身体接触および身体接触の模倣
|
||||
|
||||
### 虐待的な行動
|
||||
- 他者に向けられた暴力の脅迫または暴力的な言葉
|
||||
- いかなる個人に対する暴力の扇動または暴力的な言葉
|
||||
- 故意の威嚇
|
||||
- ストーキングや尾行
|
||||
- 繰り返しの接触によるハラスメント
|
||||
- その他、不適切と合理的に判断されるあらゆる行動
|
||||
|
||||
### オンラインハラスメント
|
||||
- オンラインの議論を持続的に妨害すること
|
||||
- 他者の個人情報を公開すること(ドキシング)
|
||||
- 歓迎されない性的な注意や誘い
|
||||
- 荒らしや意図的な妨害
|
||||
- スパムや繰り返しの広告
|
||||
- 誤情報や偽情報の拡散
|
||||
|
||||
### 報復
|
||||
- 違反を報告した者に対する報復行為
|
||||
- 受け入れがたい行動を報告したことを理由に不当に扱うこと
|
||||
- 報復として報告すると脅すこと
|
||||
|
||||
## 適用範囲
|
||||
|
||||
この行動規範は以下に適用される:
|
||||
- すべてのコミュニティ空間(GitHub Issue、プルリクエスト、ディスカッションなど)
|
||||
- プロジェクトのリポジトリとドキュメント
|
||||
- プロジェクトが主催または代表するイベントや集会
|
||||
- 個人がプロジェクトまたはコミュニティを代表する公の場
|
||||
- プロジェクトの業務に関連するプライベートな通信
|
||||
|
||||
行動規範はすべてのプロジェクト空間に適用され、また個人がプロジェクトやコミュニティを公の場で代表する際にも適用される。プロジェクトやコミュニティを代表する例には、公式プロジェクトのメールアドレスを使う、公式ソーシャルメディアアカウントから投稿する、オンライン/オフラインイベントで指名された代表として行動することが含まれる。
|
||||
|
||||
## 執行
|
||||
|
||||
コミュニティリーダーは、受け入れ可能な行動の基準を明確化し、執行する責任を負い、不適切、脅迫的、攻撃的、または有害とみなした行動に対して、適切で公正な是正措置を取る。
|
||||
|
||||
### 違反の報告
|
||||
|
||||
受け入れがたい行動を経験または目撃した場合、あるいはその他の懸念がある場合は、以下の方法で報告してほしい:
|
||||
|
||||
1. **メール:** プロジェクトメンテナーに連絡する [連絡方法を提供できる場合は記載]
|
||||
2. **GitHub Issues:** プライベートレポート機能(GitHub 設定で利用可能な場合)
|
||||
3. **ダイレクトメッセージ:** プロジェクトメンテナーに直接連絡する
|
||||
|
||||
以下を提供してほしい:
|
||||
- あなたの連絡先情報
|
||||
- 関係者の名前(共有しても問題ない場合)
|
||||
- インシデントの説明
|
||||
- コンテキストと関連リンク
|
||||
- インシデントがあなたに与えた影響
|
||||
|
||||
**すべての報告は機密扱いとされる。**
|
||||
|
||||
### 調査と対応
|
||||
|
||||
コミュニティリーダーは以下を行う:
|
||||
- すべての苦情を迅速かつ公正にレビュー・調査する
|
||||
- 報告者に関する機密性を維持する
|
||||
- 報告者に対して報告状況を返答する
|
||||
- 調査結果に基づいて適切な措置を取る
|
||||
|
||||
可能な措置には以下が含まれる:
|
||||
- プライベートな警告またはコーチング
|
||||
- 公開謝罪(違反者が同意する場合)
|
||||
- コミュニティ空間からの一時的または永久的な排除
|
||||
- コントリビュータ権限の剥奪
|
||||
- 必要に応じて GitHub やその他のプラットフォームへのエスカレーション
|
||||
|
||||
### 異議申し立てプロセス
|
||||
|
||||
判断が誤っていたと考える場合、以下の方法で異議を申し立てることができる:
|
||||
1. 新しい情報やコンテキストを提供する
|
||||
2. 複数のメンテナーによる再レビューを要求する
|
||||
3. 初回判断から 30 日以内にフォローアップする
|
||||
|
||||
## 敬意ある反対意見のためのガイドライン
|
||||
|
||||
技術コミュニティでは意見の相違は自然なことである。敬意を持って反対するための方法:
|
||||
|
||||
### Do
|
||||
- ✅ 人ではなくアイデアに焦点を当てる
|
||||
- ✅ 確認のための質問をする
|
||||
- ✅ 相手の意見の妥当な点を認める
|
||||
- ✅ 「私」を主語にした表現を使う(「私はこう考える、なぜなら…」)
|
||||
- ✅ 出典と根拠を引用する
|
||||
- ✅ 相手の視点に感謝する
|
||||
|
||||
### Don't
|
||||
- ❌ 個人攻撃をする
|
||||
- ❌ 切り捨てる言葉を使う(「それはバカげている」など)
|
||||
- ❌ 悪意があると決めつける
|
||||
- ❌ 無関係な過去の対立を持ち出す
|
||||
- ❌ トーンをエスカレートさせ敵対的になる
|
||||
- ❌ 故意に他者の意見を歪曲する
|
||||
|
||||
### 敬意ある反対意見の例
|
||||
```
|
||||
❌ 悪い例:「それはバカげたアイデアだし、君は明らかにこのプロジェクトを理解していない」
|
||||
|
||||
✅ よい例:「あなたの主張は理解できる。ただ、このアプローチは
|
||||
大規模プロジェクトでスケールしにくいのではと懸念している。
|
||||
このベンチマークが示すパフォーマンスへの影響は考慮しただろうか?
|
||||
あなたの考えを聞かせてほしい」
|
||||
```
|
||||
|
||||
## 橋を架ける
|
||||
|
||||
私たちは対話と和解の力を信じている:
|
||||
|
||||
- 自分の行動を指摘されたら、聞いて反省する
|
||||
- 害を与えた場合は謝罪する意志を持つ
|
||||
- 他者の学びと成長を支える
|
||||
- 人は誰でも間違いを犯すことを認める
|
||||
- 非難ではなく解決策に焦点を当てる
|
||||
- 善意を仮定しつつ、責任を持たせる
|
||||
|
||||
## この規範に従うメリット
|
||||
|
||||
敬意と包摂のあるコミュニティを維持することで、私たちは:
|
||||
- 多様な視点を持つ多様なコントリビュータを引きつける
|
||||
- 協力を通じてよりよい解決策を生み出す
|
||||
- より強い関係を築く
|
||||
- プロジェクトを新参者にとってより歓迎されるものにする
|
||||
- より高品質なドキュメントとサンプルを生み出す
|
||||
- 学びと成長の文化を育む
|
||||
|
||||
## 特別な配慮
|
||||
|
||||
### メンテナー向け
|
||||
- この規範を遵守する模範となる
|
||||
- 報告に迅速に対応する
|
||||
- 判断について透明性を保つ
|
||||
- 衝突を公正に解決する
|
||||
- すべての人にとって安全な環境を作る
|
||||
|
||||
### コントリビュータ向け
|
||||
- メンテナーや他のコントリビュータに善意を仮定する
|
||||
- 建設的なフィードバックを提供する
|
||||
- 新参者を支える
|
||||
- コミュニティ基準の執行を助ける
|
||||
- コミュニティ文化に主体的に関わる
|
||||
|
||||
### 全員向け
|
||||
- どのメッセージの背後にも人がいることを忘れない
|
||||
- 不満を感じたら休憩を取る
|
||||
- サポートが必要なときはコミュニティリーダーに連絡する
|
||||
- 自分が一員でありたいコミュニティを作る一助となる
|
||||
|
||||
## 帰属
|
||||
|
||||
この行動規範は以下から適応した:
|
||||
- [Contributor Covenant](https://www.contributor-covenant.org/)
|
||||
- [Mozilla Community Participation Guidelines](https://www.mozilla.org/en-US/about/governance/policies/participation/)
|
||||
- [Python Community Code of Conduct](https://www.python.org/psf/conduct/)
|
||||
|
||||
## 質問は?
|
||||
|
||||
この行動規範について質問がある場合は、プロジェクトメンテナーに連絡してほしい。
|
||||
|
||||
## バージョン履歴
|
||||
|
||||
- **Version 1.0**(2026 年 1 月)— 初版行動規範
|
||||
|
||||
---
|
||||
|
||||
**温かく包摂的で敬意のあるコミュニティの構築にご協力いただきありがとうございます!** 🌟
|
||||
|
||||
---
|
||||
**Last Updated**: April 9, 2026
|
||||
@@ -0,0 +1,385 @@
|
||||
<!-- i18n-source: CONTRIBUTING.md -->
|
||||
<!-- i18n-source-sha: 7f2e773 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="../resources/logos/claude-howto-logo-dark.svg">
|
||||
<img alt="Claude How To" src="../resources/logos/claude-howto-logo.svg">
|
||||
</picture>
|
||||
|
||||
# Claude How To へのコントリビュート
|
||||
|
||||
このプロジェクトへのコントリビュートに興味を持ってくれてありがとう!このガイドは、効果的にコントリビュートする方法を理解する助けとなる。
|
||||
|
||||
## 本プロジェクトについて
|
||||
|
||||
Claude How To は Claude Code への視覚的でサンプル駆動のガイドである。提供する内容:
|
||||
- 機能の動作を説明する **Mermaid 図**
|
||||
- すぐ使える **本番品質のテンプレート**
|
||||
- コンテキストとベストプラクティスを伴う **実世界の例**
|
||||
- 初心者から上級者までの **段階的な学習パス**
|
||||
|
||||
## コントリビューションの種類
|
||||
|
||||
### 1. 新しい例やテンプレート
|
||||
既存機能(スラッシュコマンド、スキル、フックなど)の例を追加する:
|
||||
- コピー&ペースト可能なコード
|
||||
- 動作の明確な説明
|
||||
- ユースケースとメリット
|
||||
- トラブルシューティングのヒント
|
||||
|
||||
### 2. ドキュメントの改善
|
||||
- わかりにくい箇所の明確化
|
||||
- タイポと文法の修正
|
||||
- 不足している情報の追加
|
||||
- コード例の改善
|
||||
|
||||
### 3. 機能ガイド
|
||||
新しい Claude Code 機能のガイドを作成する:
|
||||
- ステップ・バイ・ステップのチュートリアル
|
||||
- アーキテクチャ図
|
||||
- 一般的なパターンとアンチパターン
|
||||
- 実世界のワークフロー
|
||||
|
||||
### 4. バグ報告
|
||||
遭遇した問題を報告する:
|
||||
- 期待した動作を記述
|
||||
- 実際の動作を記述
|
||||
- 再現手順を含める
|
||||
- 関連する Claude Code バージョンと OS を追加
|
||||
|
||||
### 5. フィードバックと提案
|
||||
ガイドの改善を助ける:
|
||||
- よりよい説明の提案
|
||||
- 抜けの指摘
|
||||
- 新しいセクションや再編成の推奨
|
||||
|
||||
## はじめに
|
||||
|
||||
### 1. フォークとクローン
|
||||
```bash
|
||||
git clone https://github.com/luongnv89/claude-howto.git
|
||||
cd claude-howto
|
||||
```
|
||||
|
||||
### 2. ブランチを作成
|
||||
わかりやすいブランチ名を使う:
|
||||
```bash
|
||||
git checkout -b add/feature-name
|
||||
git checkout -b fix/issue-description
|
||||
git checkout -b docs/improvement-area
|
||||
```
|
||||
|
||||
### 3. 環境のセットアップ
|
||||
|
||||
pre-commit フックは、各コミット前に CI と同じチェックをローカルで実行する。すべての 4 チェックが通過しなければ PR は受理されない。
|
||||
|
||||
**必須の依存関係:**
|
||||
|
||||
```bash
|
||||
# Python ツール(このプロジェクトのパッケージマネージャは uv)
|
||||
pip install uv
|
||||
uv venv
|
||||
source .venv/bin/activate
|
||||
uv pip install -r scripts/requirements-dev.txt
|
||||
|
||||
# Markdown リンタ(Node.js)
|
||||
npm install -g markdownlint-cli
|
||||
|
||||
# Mermaid 図バリデータ(Node.js)
|
||||
npm install -g @mermaid-js/mermaid-cli
|
||||
|
||||
# pre-commit をインストールしてフックを有効化
|
||||
uv pip install pre-commit
|
||||
pre-commit install
|
||||
```
|
||||
|
||||
**セットアップの確認:**
|
||||
|
||||
```bash
|
||||
pre-commit run --all-files
|
||||
```
|
||||
|
||||
各コミットで実行されるフックは以下のとおり:
|
||||
|
||||
| フック | 検査内容 |
|
||||
|------|---------------|
|
||||
| `markdown-lint` | Markdown のフォーマットと構造 |
|
||||
| `cross-references` | 相対リンク、アンカー、コードフェンス |
|
||||
| `mermaid-syntax` | すべての ` ```mermaid ` ブロックが正しくパースされるか |
|
||||
| `link-check` | 外部 URL が到達可能か |
|
||||
| `build-epub` | EPUB がエラーなく生成されるか(`.md` 変更時) |
|
||||
|
||||
## ディレクトリ構造
|
||||
|
||||
```
|
||||
├── 01-slash-commands/ # ユーザーが起動するショートカット
|
||||
├── 02-memory/ # 永続コンテキストの例
|
||||
├── 03-skills/ # 再利用可能な能力
|
||||
├── 04-subagents/ # 専門 AI アシスタント
|
||||
├── 05-mcp/ # Model Context Protocol の例
|
||||
├── 06-hooks/ # イベント駆動の自動化
|
||||
├── 07-plugins/ # バンドル機能
|
||||
├── 08-checkpoints/ # セッションのスナップショット
|
||||
├── 09-advanced-features/ # プランニング、シンキング、バックグラウンド
|
||||
├── 10-cli/ # CLI リファレンス
|
||||
├── scripts/ # ビルドおよびユーティリティスクリプト
|
||||
└── README.md # メインガイド
|
||||
```
|
||||
|
||||
## サンプルをコントリビュートする方法
|
||||
|
||||
### スラッシュコマンドの追加
|
||||
1. `01-slash-commands/` に `.md` ファイルを作成
|
||||
2. 以下を含める:
|
||||
- 何をするかの明確な説明
|
||||
- ユースケース
|
||||
- インストール手順
|
||||
- 使用例
|
||||
- カスタマイズのヒント
|
||||
3. `01-slash-commands/README.md` を更新
|
||||
|
||||
### スキルの追加
|
||||
1. `03-skills/` にディレクトリを作成
|
||||
2. 以下を含める:
|
||||
- `SKILL.md` — メインドキュメント
|
||||
- `scripts/` — 必要に応じてヘルパースクリプト
|
||||
- `templates/` — プロンプトテンプレート
|
||||
- README に使用例
|
||||
3. `03-skills/README.md` を更新
|
||||
|
||||
### サブエージェントの追加
|
||||
1. `04-subagents/` に `.md` ファイルを作成
|
||||
2. 以下を含める:
|
||||
- エージェントの目的と能力
|
||||
- システムプロンプトの構造
|
||||
- ユースケースの例
|
||||
- 統合例
|
||||
3. `04-subagents/README.md` を更新
|
||||
|
||||
### MCP 設定の追加
|
||||
1. `05-mcp/` に `.json` ファイルを作成
|
||||
2. 以下を含める:
|
||||
- 設定の説明
|
||||
- 必要な環境変数
|
||||
- セットアップ手順
|
||||
- 使用例
|
||||
3. `05-mcp/README.md` を更新
|
||||
|
||||
### フックの追加
|
||||
1. `06-hooks/` に `.sh` ファイルを作成
|
||||
2. 以下を含める:
|
||||
- シェバンと説明
|
||||
- ロジックを説明する明確なコメント
|
||||
- エラー処理
|
||||
- セキュリティ考慮事項
|
||||
3. `06-hooks/README.md` を更新
|
||||
|
||||
## 執筆ガイドライン
|
||||
|
||||
### Markdown スタイル
|
||||
- 明確な見出し(セクションは H2、サブセクションは H3)
|
||||
- 段落は短く焦点を絞って保つ
|
||||
- リストには箇条書きを使う
|
||||
- コードブロックには言語指定を含める
|
||||
- セクション間に空行を入れる
|
||||
|
||||
### コード例
|
||||
- 例はコピー&ペーストで動くようにする
|
||||
- 自明でないロジックにはコメントを付ける
|
||||
- シンプル版と高度版の両方を含める
|
||||
- 実世界のユースケースを示す
|
||||
- 潜在的な問題点を強調する
|
||||
|
||||
### ドキュメント
|
||||
- 「何を」だけでなく「なぜ」を説明する
|
||||
- 前提条件を含める
|
||||
- トラブルシューティングを追加する
|
||||
- 関連トピックへリンクする
|
||||
- 初心者にやさしく保つ
|
||||
|
||||
### JSON/YAML
|
||||
- 適切なインデントを使う(2 または 4 スペースで一貫させる)
|
||||
- 設定を説明するコメントを付ける
|
||||
- 検証例を含める
|
||||
|
||||
### 図
|
||||
- 可能なときは Mermaid を使う
|
||||
- 図はシンプルで読みやすく保つ
|
||||
- 図の下に説明を含める
|
||||
- 関連セクションへリンクする
|
||||
|
||||
## コミットガイドライン
|
||||
|
||||
Conventional Commits 形式に従う:
|
||||
```
|
||||
type(scope): description
|
||||
|
||||
[optional body]
|
||||
```
|
||||
|
||||
種別:
|
||||
- `feat`:新機能や新サンプル
|
||||
- `fix`:バグ修正や訂正
|
||||
- `docs`:ドキュメント変更
|
||||
- `refactor`:コード再構築
|
||||
- `style`:フォーマット変更
|
||||
- `test`:テスト追加・変更
|
||||
- `chore`:ビルド、依存関係など
|
||||
|
||||
例:
|
||||
```
|
||||
feat(slash-commands): Add API documentation generator
|
||||
docs(memory): Improve personal preferences example
|
||||
fix(README): Correct table of contents link
|
||||
docs(skills): Add comprehensive code review skill
|
||||
```
|
||||
|
||||
## 提出前
|
||||
|
||||
### チェックリスト
|
||||
- [ ] コードがプロジェクトのスタイルと規約に従っている
|
||||
- [ ] 新しいサンプルに明確なドキュメントが含まれている
|
||||
- [ ] README ファイル(ローカルとルート)が更新されている
|
||||
- [ ] 機微な情報(API キー、認証情報)が含まれていない
|
||||
- [ ] サンプルがテスト済みで動作する
|
||||
- [ ] リンクが検証され正しい
|
||||
- [ ] ファイルの権限が適切(スクリプトは実行可能)
|
||||
- [ ] コミットメッセージが明確で説明的
|
||||
|
||||
### ローカルテスト
|
||||
```bash
|
||||
# すべての pre-commit チェックを実行(CI と同じチェック)
|
||||
pre-commit run --all-files
|
||||
|
||||
# 変更内容をレビュー
|
||||
git diff
|
||||
```
|
||||
|
||||
## プルリクエストのプロセス
|
||||
|
||||
1. **明確な説明とともに PR を作成:**
|
||||
- 何を追加/修正するか?
|
||||
- なぜ必要か?
|
||||
- 関連する Issue(あれば)
|
||||
|
||||
2. **関連する詳細を含める:**
|
||||
- 新機能の場合:ユースケースを含める
|
||||
- ドキュメントの場合:改善点を説明する
|
||||
- サンプルの場合:ビフォア/アフターを示す
|
||||
|
||||
3. **Issue にリンクする:**
|
||||
- `Closes #123` を使うと関連 Issue を自動クローズ
|
||||
|
||||
4. **レビューを辛抱強く待つ:**
|
||||
- メンテナーが改善を提案することがある
|
||||
- フィードバックに基づいて反復する
|
||||
- 最終判断はメンテナーが行う
|
||||
|
||||
## コードレビュープロセス
|
||||
|
||||
レビュアーは以下を確認する:
|
||||
- **正確性:** 説明どおりに動作するか?
|
||||
- **品質:** 本番品質か?
|
||||
- **一貫性:** プロジェクトのパターンに従っているか?
|
||||
- **ドキュメント:** 明確で完全か?
|
||||
- **セキュリティ:** 脆弱性はないか?
|
||||
|
||||
## Issue の報告
|
||||
|
||||
### バグ報告
|
||||
以下を含める:
|
||||
- Claude Code バージョン
|
||||
- オペレーティングシステム
|
||||
- 再現手順
|
||||
- 期待される動作
|
||||
- 実際の動作
|
||||
- 該当する場合はスクリーンショット
|
||||
|
||||
### 機能リクエスト
|
||||
以下を含める:
|
||||
- ユースケースまたは解決したい問題
|
||||
- 提案する解決策
|
||||
- 検討した代替案
|
||||
- 追加のコンテキスト
|
||||
|
||||
### ドキュメントの問題
|
||||
以下を含める:
|
||||
- わかりにくい点や不足している点
|
||||
- 改善案
|
||||
- 例または参照
|
||||
|
||||
## プロジェクトポリシー
|
||||
|
||||
### 機微な情報
|
||||
- API キー、トークン、認証情報を絶対にコミットしない
|
||||
- サンプルではプレースホルダ値を使う
|
||||
- 設定ファイルには `.env.example` を含める
|
||||
- 必要な環境変数をドキュメント化する
|
||||
|
||||
### コード品質
|
||||
- 例は焦点を絞り読みやすく保つ
|
||||
- 過剰設計を避ける
|
||||
- 自明でないロジックにはコメントを含める
|
||||
- 提出前に十分にテストする
|
||||
|
||||
### 知的財産
|
||||
- オリジナルコンテンツの所有権は著者に帰属する
|
||||
- プロジェクトは教育用ライセンスを使用する
|
||||
- 既存の著作権を尊重する
|
||||
- 必要に応じて帰属を提供する
|
||||
|
||||
## ヘルプを得る
|
||||
|
||||
- **質問:** GitHub Issues でディスカッションを開く
|
||||
- **一般的なヘルプ:** 既存ドキュメントを確認
|
||||
- **開発のヘルプ:** 類似サンプルをレビュー
|
||||
- **コードレビュー:** PR でメンテナーをタグ付け
|
||||
|
||||
## 謝辞
|
||||
|
||||
コントリビュータは以下で認識される:
|
||||
- README.md のコントリビュータセクション
|
||||
- GitHub のコントリビュータページ
|
||||
- コミット履歴
|
||||
|
||||
## セキュリティ
|
||||
|
||||
例やドキュメントをコントリビュートする際は、安全なコーディング慣行に従ってほしい:
|
||||
|
||||
- **シークレットや API キーをハードコードしない** — 環境変数を使う
|
||||
- **セキュリティへの影響を警告する** — 潜在的なリスクを強調する
|
||||
- **安全なデフォルトを使う** — セキュリティ機能をデフォルトで有効化する
|
||||
- **入力を検証する** — 適切な入力検証とサニタイズを示す
|
||||
- **セキュリティに関する注意を含める** — セキュリティ考慮事項を文書化する
|
||||
|
||||
セキュリティ問題については、脆弱性報告プロセスについて [SECURITY.md](SECURITY.md) を参照。
|
||||
|
||||
## 行動規範
|
||||
|
||||
私たちは温かく包摂的なコミュニティを提供することにコミットしている。コミュニティ基準の詳細は [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) を読んでほしい。
|
||||
|
||||
要点:
|
||||
- 敬意を持ち包摂的であること
|
||||
- フィードバックを快く受け入れること
|
||||
- 他者の学びと成長を助けること
|
||||
- ハラスメントや差別を避けること
|
||||
- 問題はメンテナーに報告すること
|
||||
|
||||
すべてのコントリビュータはこの規範を遵守し、互いに親切と敬意を持って接することが求められる。
|
||||
|
||||
## ライセンス
|
||||
|
||||
本プロジェクトへのコントリビューションは MIT License の下でライセンスされることに同意するものとする。詳細は [LICENSE](../LICENSE) を参照。
|
||||
|
||||
## 質問は?
|
||||
|
||||
- [README](README.md) を確認
|
||||
- [LEARNING-ROADMAP.md](LEARNING-ROADMAP.md) をレビュー
|
||||
- 既存サンプルを参照
|
||||
- 議論のために Issue を開く
|
||||
|
||||
コントリビュートしてくれてありがとう!🙏
|
||||
|
||||
---
|
||||
**Last Updated**: April 9, 2026
|
||||
+893
@@ -0,0 +1,893 @@
|
||||
<!-- i18n-source: INDEX.md -->
|
||||
<!-- i18n-source-sha: d17d515 -->
|
||||
<!-- i18n-date: 2026-04-27 -->
|
||||
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="../resources/logos/claude-howto-logo-dark.svg">
|
||||
<img alt="Claude How To" src="../resources/logos/claude-howto-logo.svg">
|
||||
</picture>
|
||||
|
||||
# Claude Code 例題 — 完全索引
|
||||
|
||||
本ドキュメントは、機能種別ごとに整理された全サンプルファイルの完全索引である。
|
||||
|
||||
## サマリー統計
|
||||
|
||||
- **総ファイル数**:100 ファイル超
|
||||
- **カテゴリ**:10 機能カテゴリ
|
||||
- **プラグイン**:完全プラグイン 3 個
|
||||
- **スキル**:完全スキル 6 個
|
||||
- **フック**:例フック 8 個
|
||||
- **すぐ使える**:すべての例
|
||||
|
||||
---
|
||||
|
||||
## 01. スラッシュコマンド(10 ファイル)
|
||||
|
||||
日常ワークフロー向けにユーザーが実行するショートカット。
|
||||
|
||||
| ファイル | 説明 | ユースケース |
|
||||
|------|-------------|----------|
|
||||
| `optimize.md` | コード最適化アナライザ | パフォーマンス問題の検出 |
|
||||
| `pr.md` | プルリクエスト準備 | PR ワークフロー自動化 |
|
||||
| `generate-api-docs.md` | API ドキュメント生成 | API ドキュメント生成 |
|
||||
| `commit.md` | コミットメッセージ補助 | 標準化されたコミット |
|
||||
| `setup-ci-cd.md` | CI/CD パイプラインセットアップ | DevOps 自動化 |
|
||||
| `push-all.md` | 全変更を push | 高速 push ワークフロー |
|
||||
| `unit-test-expand.md` | ユニットテストカバレッジ拡張 | テスト自動化 |
|
||||
| `doc-refactor.md` | ドキュメントリファクタリング | ドキュメント改善 |
|
||||
| `pr-slash-command.png` | スクリーンショット例 | 視覚的参考 |
|
||||
| `README.md` | ドキュメント | セットアップと使用ガイド |
|
||||
|
||||
**インストール先**:`.claude/commands/`
|
||||
|
||||
**使い方**:`/optimize`、`/pr`、`/generate-api-docs`、`/commit`、`/setup-ci-cd`、`/push-all`、`/unit-test-expand`、`/doc-refactor`
|
||||
|
||||
---
|
||||
|
||||
## 02. メモリ(6 ファイル)
|
||||
|
||||
永続的なコンテキストとプロジェクト規約。
|
||||
|
||||
| ファイル | 説明 | スコープ | 配置場所 |
|
||||
|------|-------------|-------|----------|
|
||||
| `project-CLAUDE.md` | チームプロジェクト規約 | プロジェクト全体 | `./CLAUDE.md` |
|
||||
| `directory-api-CLAUDE.md` | API 固有のルール | ディレクトリ | `./src/api/CLAUDE.md` |
|
||||
| `personal-CLAUDE.md` | 個人の好み | ユーザー | `~/.claude/CLAUDE.md` |
|
||||
| `memory-saved.png` | スクリーンショット:保存済みメモリ | - | 視覚的参考 |
|
||||
| `memory-ask-claude.png` | スクリーンショット:Claude に質問 | - | 視覚的参考 |
|
||||
| `README.md` | ドキュメント | - | リファレンス |
|
||||
|
||||
**インストール**:適切な場所にコピー
|
||||
|
||||
**使い方**:Claude が自動的に読み込む
|
||||
|
||||
---
|
||||
|
||||
## 03. スキル(28 ファイル)
|
||||
|
||||
スクリプトとテンプレートを含む自動起動機能。
|
||||
|
||||
### コードレビュースキル(5 ファイル)
|
||||
```
|
||||
code-review/
|
||||
├── SKILL.md # スキル定義
|
||||
├── scripts/
|
||||
│ ├── analyze-metrics.py # コードメトリクス分析
|
||||
│ └── compare-complexity.py # 複雑度比較
|
||||
└── templates/
|
||||
├── review-checklist.md # レビューチェックリスト
|
||||
└── finding-template.md # 指摘ドキュメント
|
||||
```
|
||||
|
||||
**目的**:セキュリティ、パフォーマンス、品質分析を含む包括的コードレビュー
|
||||
|
||||
**自動起動**:コードレビュー時
|
||||
|
||||
---
|
||||
|
||||
### ブランドボイススキル(4 ファイル)
|
||||
```
|
||||
brand-voice/
|
||||
├── SKILL.md # スキル定義
|
||||
├── templates/
|
||||
│ ├── email-template.txt # メールフォーマット
|
||||
│ └── social-post-template.txt # SNS フォーマット
|
||||
└── tone-examples.md # メッセージ例
|
||||
```
|
||||
|
||||
**目的**:コミュニケーションでブランドボイスの一貫性を保つ
|
||||
|
||||
**自動起動**:マーケティング文の作成時
|
||||
|
||||
---
|
||||
|
||||
### ドキュメント生成スキル(2 ファイル)
|
||||
```
|
||||
doc-generator/
|
||||
├── SKILL.md # スキル定義
|
||||
└── generate-docs.py # Python ドキュメント抽出
|
||||
```
|
||||
|
||||
**目的**:ソースコードから包括的な API ドキュメントを生成
|
||||
|
||||
**自動起動**:API ドキュメントの作成・更新時
|
||||
|
||||
---
|
||||
|
||||
### リファクタスキル(5 ファイル)
|
||||
```
|
||||
refactor/
|
||||
├── SKILL.md # スキル定義
|
||||
├── scripts/
|
||||
│ ├── analyze-complexity.py # 複雑度分析
|
||||
│ └── detect-smells.py # コードスメル検出
|
||||
├── references/
|
||||
│ ├── code-smells.md # コードスメルカタログ
|
||||
│ └── refactoring-catalog.md # リファクタリングパターン
|
||||
└── templates/
|
||||
└── refactoring-plan.md # リファクタリング計画テンプレート
|
||||
```
|
||||
|
||||
**目的**:複雑度分析を伴う体系的リファクタリング
|
||||
|
||||
**自動起動**:コードリファクタリング時
|
||||
|
||||
---
|
||||
|
||||
### Claude MD スキル(1 ファイル)
|
||||
```
|
||||
claude-md/
|
||||
└── SKILL.md # スキル定義
|
||||
```
|
||||
|
||||
**目的**:CLAUDE.md ファイルの管理と最適化
|
||||
|
||||
---
|
||||
|
||||
### ブログ草稿スキル(3 ファイル)
|
||||
```
|
||||
blog-draft/
|
||||
├── SKILL.md # スキル定義
|
||||
└── templates/
|
||||
├── draft-template.md # ブログ草稿テンプレート
|
||||
└── outline-template.md # ブログ構成テンプレート
|
||||
```
|
||||
|
||||
**目的**:一貫した構造でブログ記事を草稿する
|
||||
|
||||
**追加**:`README.md` — スキル概要と使用ガイド
|
||||
|
||||
**インストール先**:`~/.claude/skills/` または `.claude/skills/`
|
||||
|
||||
---
|
||||
|
||||
## 04. サブエージェント(9 ファイル)
|
||||
|
||||
カスタム能力を持つ専門特化 AI アシスタント。
|
||||
|
||||
| ファイル | 説明 | ツール | ユースケース |
|
||||
|------|-------------|-------|----------|
|
||||
| `code-reviewer.md` | コード品質分析 | read, grep, diff, lint_runner | 包括的レビュー |
|
||||
| `test-engineer.md` | テストカバレッジ分析 | read, write, bash, grep | テスト自動化 |
|
||||
| `documentation-writer.md` | ドキュメント作成 | read, write, grep | ドキュメント生成 |
|
||||
| `secure-reviewer.md` | セキュリティレビュー(読み取り専用) | read, grep | セキュリティ監査 |
|
||||
| `implementation-agent.md` | フル実装 | read, write, bash, grep, edit, glob | 機能開発 |
|
||||
| `debugger.md` | デバッグ専門家 | read, bash, grep | バグ調査 |
|
||||
| `data-scientist.md` | データ分析専門家 | read, write, bash | データワークフロー |
|
||||
| `clean-code-reviewer.md` | クリーンコード基準 | read, grep | コード品質 |
|
||||
| `README.md` | ドキュメント | - | セットアップと使用ガイド |
|
||||
|
||||
**インストール先**:`.claude/agents/`
|
||||
|
||||
**使い方**:メインエージェントが自動委譲
|
||||
|
||||
---
|
||||
|
||||
## 05. MCP プロトコル(5 ファイル)
|
||||
|
||||
外部ツールおよび API の統合。
|
||||
|
||||
| ファイル | 説明 | 連携先 | ユースケース |
|
||||
|------|-------------|-----------------|----------|
|
||||
| `github-mcp.json` | GitHub 連携 | GitHub API | PR / issue 管理 |
|
||||
| `database-mcp.json` | データベースクエリ | PostgreSQL/MySQL | ライブデータクエリ |
|
||||
| `filesystem-mcp.json` | ファイル操作 | ローカルファイルシステム | ファイル管理 |
|
||||
| `multi-mcp.json` | 複数サーバ | GitHub + DB + Slack | 完全統合 |
|
||||
| `README.md` | ドキュメント | - | セットアップと使用ガイド |
|
||||
|
||||
**インストール先**:`.mcp.json`(プロジェクトスコープ)または `~/.claude.json`(ユーザースコープ)
|
||||
|
||||
**使い方**:`/mcp__github__list_prs` など
|
||||
|
||||
---
|
||||
|
||||
## 06. フック(9 ファイル)
|
||||
|
||||
自動実行されるイベント駆動の自動化スクリプト。
|
||||
|
||||
| ファイル | 説明 | イベント | ユースケース |
|
||||
|------|-------------|-------|----------|
|
||||
| `format-code.sh` | コード自動整形 | PreToolUse:Write | コード整形 |
|
||||
| `pre-commit.sh` | コミット前のテスト実行 | PreToolUse:Bash | テスト自動化 |
|
||||
| `security-scan.sh` | セキュリティスキャン | PostToolUse:Write | セキュリティチェック |
|
||||
| `log-bash.sh` | bash コマンド記録 | PostToolUse:Bash | コマンドログ |
|
||||
| `validate-prompt.sh` | プロンプト検証 | PreToolUse | 入力検証 |
|
||||
| `notify-team.sh` | 通知送信 | Notification | チーム通知 |
|
||||
| `context-tracker.py` | コンテキストウィンドウ使用量追跡 | PostToolUse | コンテキスト監視 |
|
||||
| `context-tracker-tiktoken.py` | トークンベースのコンテキスト追跡 | PostToolUse | 精密なトークン計測 |
|
||||
| `README.md` | ドキュメント | - | セットアップと使用ガイド |
|
||||
|
||||
**インストール先**:`~/.claude/settings.json` で設定
|
||||
|
||||
**使い方**:設定で構成し、自動実行される
|
||||
|
||||
**フックの種類**(5 系統、28 イベント):
|
||||
- ツール系フック:PreToolUse、PostToolUse、PostToolUseFailure、PermissionRequest
|
||||
- セッション系フック:SessionStart、SessionEnd、Stop、StopFailure、SubagentStart、SubagentStop
|
||||
- タスク系フック:UserPromptSubmit、TaskCompleted、TaskCreated、TeammateIdle
|
||||
- ライフサイクル系フック:ConfigChange、CwdChanged、FileChanged、PreCompact、PostCompact、WorktreeCreate、WorktreeRemove、Notification、InstructionsLoaded、Elicitation、ElicitationResult
|
||||
|
||||
---
|
||||
|
||||
## 07. プラグイン(完全プラグイン 3 個、40 ファイル)
|
||||
|
||||
機能のバンドル集。
|
||||
|
||||
### PR レビュープラグイン(10 ファイル)
|
||||
```
|
||||
pr-review/
|
||||
├── .claude-plugin/
|
||||
│ └── plugin.json # プラグインマニフェスト
|
||||
├── commands/
|
||||
│ ├── review-pr.md # 包括的レビュー
|
||||
│ ├── check-security.md # セキュリティチェック
|
||||
│ └── check-tests.md # テストカバレッジチェック
|
||||
├── agents/
|
||||
│ ├── security-reviewer.md # セキュリティ専門家
|
||||
│ ├── test-checker.md # テスト専門家
|
||||
│ └── performance-analyzer.md # パフォーマンス専門家
|
||||
├── mcp/
|
||||
│ └── github-config.json # GitHub 連携
|
||||
├── hooks/
|
||||
│ └── pre-review.js # レビュー前検証
|
||||
└── README.md # プラグインドキュメント
|
||||
```
|
||||
|
||||
**機能**:セキュリティ分析、テストカバレッジ、パフォーマンス影響
|
||||
|
||||
**コマンド**:`/review-pr`、`/check-security`、`/check-tests`
|
||||
|
||||
**インストール**:`/plugin install pr-review`
|
||||
|
||||
---
|
||||
|
||||
### DevOps 自動化プラグイン(15 ファイル)
|
||||
```
|
||||
devops-automation/
|
||||
├── .claude-plugin/
|
||||
│ └── plugin.json # プラグインマニフェスト
|
||||
├── commands/
|
||||
│ ├── deploy.md # デプロイ
|
||||
│ ├── rollback.md # ロールバック
|
||||
│ ├── status.md # システムステータス
|
||||
│ └── incident.md # インシデント対応
|
||||
├── agents/
|
||||
│ ├── deployment-specialist.md # デプロイ専門家
|
||||
│ ├── incident-commander.md # インシデント指揮
|
||||
│ └── alert-analyzer.md # アラート分析
|
||||
├── mcp/
|
||||
│ └── kubernetes-config.json # Kubernetes 連携
|
||||
├── hooks/
|
||||
│ ├── pre-deploy.js # デプロイ前チェック
|
||||
│ └── post-deploy.js # デプロイ後タスク
|
||||
├── scripts/
|
||||
│ ├── deploy.sh # デプロイ自動化
|
||||
│ ├── rollback.sh # ロールバック自動化
|
||||
│ └── health-check.sh # ヘルスチェック
|
||||
└── README.md # プラグインドキュメント
|
||||
```
|
||||
|
||||
**機能**:Kubernetes デプロイ、ロールバック、監視、インシデント対応
|
||||
|
||||
**コマンド**:`/deploy`、`/rollback`、`/status`、`/incident`
|
||||
|
||||
**インストール**:`/plugin install devops-automation`
|
||||
|
||||
---
|
||||
|
||||
### ドキュメントプラグイン(14 ファイル)
|
||||
```
|
||||
documentation/
|
||||
├── .claude-plugin/
|
||||
│ └── plugin.json # プラグインマニフェスト
|
||||
├── commands/
|
||||
│ ├── generate-api-docs.md # API ドキュメント生成
|
||||
│ ├── generate-readme.md # README 作成
|
||||
│ ├── sync-docs.md # ドキュメント同期
|
||||
│ └── validate-docs.md # ドキュメント検証
|
||||
├── agents/
|
||||
│ ├── api-documenter.md # API ドキュメント専門家
|
||||
│ ├── code-commentator.md # コードコメント専門家
|
||||
│ └── example-generator.md # 例の作成
|
||||
├── mcp/
|
||||
│ └── github-docs-config.json # GitHub 連携
|
||||
├── templates/
|
||||
│ ├── api-endpoint.md # API エンドポイントテンプレート
|
||||
│ ├── function-docs.md # 関数ドキュメントテンプレート
|
||||
│ └── adr-template.md # ADR テンプレート
|
||||
└── README.md # プラグインドキュメント
|
||||
```
|
||||
|
||||
**機能**:API ドキュメント、README 生成、ドキュメント同期、検証
|
||||
|
||||
**コマンド**:`/generate-api-docs`、`/generate-readme`、`/sync-docs`、`/validate-docs`
|
||||
|
||||
**インストール**:`/plugin install documentation`
|
||||
|
||||
**追加**:`README.md` — プラグイン概要と使用ガイド
|
||||
|
||||
---
|
||||
|
||||
## 08. チェックポイントと巻き戻し(2 ファイル)
|
||||
|
||||
会話状態を保存し、別アプローチを探索する。
|
||||
|
||||
| ファイル | 説明 | 内容 |
|
||||
|------|-------------|---------|
|
||||
| `README.md` | ドキュメント | 包括的なチェックポイントガイド |
|
||||
| `checkpoint-examples.md` | 実用例 | DB マイグレーション、パフォーマンス最適化、UI 反復、デバッグ |
|
||||
| | | |
|
||||
|
||||
**主要概念**:
|
||||
- **チェックポイント**:会話状態のスナップショット
|
||||
- **巻き戻し**:以前のチェックポイントへ戻る
|
||||
- **分岐点**:複数のアプローチを探索する
|
||||
|
||||
**使い方**:
|
||||
```
|
||||
# チェックポイントはユーザープロンプトのたびに自動作成される
|
||||
# 巻き戻しは Esc を 2 回押すか、次を実行:
|
||||
/rewind
|
||||
# 選択肢: コードと会話の復元、会話の復元、
|
||||
# コードの復元、ここから要約、やめる
|
||||
```
|
||||
|
||||
**ユースケース**:
|
||||
- 別実装を試す
|
||||
- ミスからのリカバリ
|
||||
- 安全な実験
|
||||
- 解決策の比較
|
||||
- A/B テスト
|
||||
|
||||
---
|
||||
|
||||
## 09. 高度な機能(3 ファイル)
|
||||
|
||||
複雑なワークフロー向けの高度な機能。
|
||||
|
||||
| ファイル | 説明 | 機能 |
|
||||
|------|-------------|----------|
|
||||
| `README.md` | 完全ガイド | 全高度機能のドキュメント |
|
||||
| `config-examples.json` | 設定例 | ユースケース別の 10 種以上の設定 |
|
||||
| `planning-mode-examples.md` | プランニング例 | REST API、DB マイグレーション、リファクタリング |
|
||||
| スケジュールタスク | `/loop` および cron ツールによる反復タスク | 自動化された反復ワークフロー |
|
||||
| Chrome 連携 | ヘッドレス Chromium によるブラウザ自動化 | Web テストとスクレイピング |
|
||||
| リモートコントロール(拡張) | 接続方式、セキュリティ、比較表 | リモートセッション管理 |
|
||||
| キーバインドカスタマイズ | カスタムキーバインド、コード対応、コンテキスト | パーソナライズされたショートカット |
|
||||
| デスクトップアプリ(拡張) | コネクタ、launch.json、エンタープライズ機能 | デスクトップ統合 |
|
||||
| | | |
|
||||
|
||||
**カバーされる高度機能**:
|
||||
|
||||
### プランニングモード
|
||||
- 詳細な実装計画の作成
|
||||
- 時間見積もりとリスク評価
|
||||
- 体系的なタスク分解
|
||||
|
||||
### 拡張思考
|
||||
- 複雑な問題に対する深い推論
|
||||
- アーキテクチャ意思決定の分析
|
||||
- トレードオフの評価
|
||||
|
||||
### バックグラウンドタスク
|
||||
- ブロックなしの長時間処理
|
||||
- 並列開発ワークフロー
|
||||
- タスク管理と監視
|
||||
|
||||
### 権限モード
|
||||
- **default**:危険な操作で承認を求める
|
||||
- **acceptEdits**:ファイル編集を自動承認、それ以外は確認
|
||||
- **plan**:読み取り専用分析、変更なし
|
||||
- **auto**:安全な操作を自動承認、危険なものは確認
|
||||
- **dontAsk**:危険なもの以外すべて承認
|
||||
- **bypassPermissions**:すべて承認(`--dangerously-skip-permissions` が必要)
|
||||
|
||||
### ヘッドレスモード(`claude -p`)
|
||||
- CI/CD 統合
|
||||
- 自動化されたタスク実行
|
||||
- バッチ処理
|
||||
|
||||
### セッション管理
|
||||
- 複数の作業セッション
|
||||
- セッション切替と保存
|
||||
- セッション永続化
|
||||
|
||||
### インタラクティブ機能
|
||||
- キーボードショートカット
|
||||
- コマンド履歴
|
||||
- タブ補完
|
||||
- 複数行入力
|
||||
|
||||
### 設定
|
||||
- 包括的な設定管理
|
||||
- 環境別設定
|
||||
- プロジェクト別カスタマイズ
|
||||
|
||||
### スケジュールタスク
|
||||
- `/loop` コマンドによる反復タスク
|
||||
- cron ツール:CronCreate、CronList、CronDelete
|
||||
- 自動化された反復ワークフロー
|
||||
|
||||
### Chrome 連携
|
||||
- ヘッドレス Chromium によるブラウザ自動化
|
||||
- Web テストおよびスクレイピング能力
|
||||
- ページ操作とデータ抽出
|
||||
|
||||
### リモートコントロール(拡張)
|
||||
- 接続方式とプロトコル
|
||||
- セキュリティ上の留意事項とベストプラクティス
|
||||
- リモートアクセスオプションの比較表
|
||||
|
||||
### キーバインドカスタマイズ
|
||||
- カスタムキーバインド設定
|
||||
- 複数キーショートカットのコード対応
|
||||
- コンテキストに応じたキーバインドの有効化
|
||||
|
||||
### デスクトップアプリ(拡張)
|
||||
- IDE 統合のためのコネクタ
|
||||
- launch.json 設定
|
||||
- エンタープライズ機能とデプロイ
|
||||
|
||||
---
|
||||
|
||||
## 10. CLI 利用(1 ファイル)
|
||||
|
||||
コマンドラインインターフェースの利用パターンとリファレンス。
|
||||
|
||||
| ファイル | 説明 | 内容 |
|
||||
|------|-------------|---------|
|
||||
| `README.md` | CLI ドキュメント | フラグ、オプション、利用パターン |
|
||||
|
||||
**主な CLI 機能**:
|
||||
- `claude` — 対話セッションを開始
|
||||
- `claude -p "prompt"` — ヘッドレス / 非対話モード
|
||||
- `claude web` — Web セッションを起動
|
||||
- `claude --model` — モデル選択(Sonnet 4.6、Opus 4.7、Haiku 4.5)
|
||||
- `claude --permission-mode` — 権限モードの設定
|
||||
- `claude --remote` — WebSocket 経由のリモートコントロール有効化
|
||||
|
||||
---
|
||||
|
||||
## ドキュメントファイル(13 ファイル)
|
||||
|
||||
| ファイル | 場所 | 説明 |
|
||||
|------|----------|-------------|
|
||||
| `README.md` | `/` | メイン例題概要 |
|
||||
| `INDEX.md` | `/` | この完全索引 |
|
||||
| `QUICK_REFERENCE.md` | `/` | クイックリファレンスカード |
|
||||
| `README.md` | `/01-slash-commands/` | スラッシュコマンドガイド |
|
||||
| `README.md` | `/02-memory/` | メモリガイド |
|
||||
| `README.md` | `/03-skills/` | スキルガイド |
|
||||
| `README.md` | `/04-subagents/` | サブエージェントガイド |
|
||||
| `README.md` | `/05-mcp/` | MCP ガイド |
|
||||
| `README.md` | `/06-hooks/` | フックガイド |
|
||||
| `README.md` | `/07-plugins/` | プラグインガイド |
|
||||
| `README.md` | `/08-checkpoints/` | チェックポイントガイド |
|
||||
| `README.md` | `/09-advanced-features/` | 高度な機能ガイド |
|
||||
| `README.md` | `/10-cli/` | CLI ガイド |
|
||||
|
||||
---
|
||||
|
||||
## 完全ファイルツリー
|
||||
|
||||
```
|
||||
claude-howto/
|
||||
├── README.md # メイン概要
|
||||
├── INDEX.md # このファイル
|
||||
├── QUICK_REFERENCE.md # クイックリファレンスカード
|
||||
├── claude_concepts_guide.md # オリジナルガイド
|
||||
│
|
||||
├── 01-slash-commands/ # スラッシュコマンド
|
||||
│ ├── optimize.md
|
||||
│ ├── pr.md
|
||||
│ ├── generate-api-docs.md
|
||||
│ ├── commit.md
|
||||
│ ├── setup-ci-cd.md
|
||||
│ ├── push-all.md
|
||||
│ ├── unit-test-expand.md
|
||||
│ ├── doc-refactor.md
|
||||
│ ├── pr-slash-command.png
|
||||
│ └── README.md
|
||||
│
|
||||
├── 02-memory/ # メモリ
|
||||
│ ├── project-CLAUDE.md
|
||||
│ ├── directory-api-CLAUDE.md
|
||||
│ ├── personal-CLAUDE.md
|
||||
│ ├── memory-saved.png
|
||||
│ ├── memory-ask-claude.png
|
||||
│ └── README.md
|
||||
│
|
||||
├── 03-skills/ # スキル
|
||||
│ ├── code-review/
|
||||
│ │ ├── SKILL.md
|
||||
│ │ ├── scripts/
|
||||
│ │ │ ├── analyze-metrics.py
|
||||
│ │ │ └── compare-complexity.py
|
||||
│ │ └── templates/
|
||||
│ │ ├── review-checklist.md
|
||||
│ │ └── finding-template.md
|
||||
│ ├── brand-voice/
|
||||
│ │ ├── SKILL.md
|
||||
│ │ ├── templates/
|
||||
│ │ │ ├── email-template.txt
|
||||
│ │ │ └── social-post-template.txt
|
||||
│ │ └── tone-examples.md
|
||||
│ ├── doc-generator/
|
||||
│ │ ├── SKILL.md
|
||||
│ │ └── generate-docs.py
|
||||
│ ├── refactor/
|
||||
│ │ ├── SKILL.md
|
||||
│ │ ├── scripts/
|
||||
│ │ │ ├── analyze-complexity.py
|
||||
│ │ │ └── detect-smells.py
|
||||
│ │ ├── references/
|
||||
│ │ │ ├── code-smells.md
|
||||
│ │ │ └── refactoring-catalog.md
|
||||
│ │ └── templates/
|
||||
│ │ └── refactoring-plan.md
|
||||
│ ├── claude-md/
|
||||
│ │ └── SKILL.md
|
||||
│ ├── blog-draft/
|
||||
│ │ ├── SKILL.md
|
||||
│ │ └── templates/
|
||||
│ │ ├── draft-template.md
|
||||
│ │ └── outline-template.md
|
||||
│ └── README.md
|
||||
│
|
||||
├── 04-subagents/ # サブエージェント
|
||||
│ ├── code-reviewer.md
|
||||
│ ├── test-engineer.md
|
||||
│ ├── documentation-writer.md
|
||||
│ ├── secure-reviewer.md
|
||||
│ ├── implementation-agent.md
|
||||
│ ├── debugger.md
|
||||
│ ├── data-scientist.md
|
||||
│ ├── clean-code-reviewer.md
|
||||
│ └── README.md
|
||||
│
|
||||
├── 05-mcp/ # MCP プロトコル
|
||||
│ ├── github-mcp.json
|
||||
│ ├── database-mcp.json
|
||||
│ ├── filesystem-mcp.json
|
||||
│ ├── multi-mcp.json
|
||||
│ └── README.md
|
||||
│
|
||||
├── 06-hooks/ # フック
|
||||
│ ├── format-code.sh
|
||||
│ ├── pre-commit.sh
|
||||
│ ├── security-scan.sh
|
||||
│ ├── log-bash.sh
|
||||
│ ├── validate-prompt.sh
|
||||
│ ├── notify-team.sh
|
||||
│ ├── context-tracker.py
|
||||
│ ├── context-tracker-tiktoken.py
|
||||
│ └── README.md
|
||||
│
|
||||
├── 07-plugins/ # プラグイン
|
||||
│ ├── pr-review/
|
||||
│ │ ├── .claude-plugin/
|
||||
│ │ │ └── plugin.json
|
||||
│ │ ├── commands/
|
||||
│ │ │ ├── review-pr.md
|
||||
│ │ │ ├── check-security.md
|
||||
│ │ │ └── check-tests.md
|
||||
│ │ ├── agents/
|
||||
│ │ │ ├── security-reviewer.md
|
||||
│ │ │ ├── test-checker.md
|
||||
│ │ │ └── performance-analyzer.md
|
||||
│ │ ├── mcp/
|
||||
│ │ │ └── github-config.json
|
||||
│ │ ├── hooks/
|
||||
│ │ │ └── pre-review.js
|
||||
│ │ └── README.md
|
||||
│ ├── devops-automation/
|
||||
│ │ ├── .claude-plugin/
|
||||
│ │ │ └── plugin.json
|
||||
│ │ ├── commands/
|
||||
│ │ │ ├── deploy.md
|
||||
│ │ │ ├── rollback.md
|
||||
│ │ │ ├── status.md
|
||||
│ │ │ └── incident.md
|
||||
│ │ ├── agents/
|
||||
│ │ │ ├── deployment-specialist.md
|
||||
│ │ │ ├── incident-commander.md
|
||||
│ │ │ └── alert-analyzer.md
|
||||
│ │ ├── mcp/
|
||||
│ │ │ └── kubernetes-config.json
|
||||
│ │ ├── hooks/
|
||||
│ │ │ ├── pre-deploy.js
|
||||
│ │ │ └── post-deploy.js
|
||||
│ │ ├── scripts/
|
||||
│ │ │ ├── deploy.sh
|
||||
│ │ │ ├── rollback.sh
|
||||
│ │ │ └── health-check.sh
|
||||
│ │ └── README.md
|
||||
│ ├── documentation/
|
||||
│ │ ├── .claude-plugin/
|
||||
│ │ │ └── plugin.json
|
||||
│ │ ├── commands/
|
||||
│ │ │ ├── generate-api-docs.md
|
||||
│ │ │ ├── generate-readme.md
|
||||
│ │ │ ├── sync-docs.md
|
||||
│ │ │ └── validate-docs.md
|
||||
│ │ ├── agents/
|
||||
│ │ │ ├── api-documenter.md
|
||||
│ │ │ ├── code-commentator.md
|
||||
│ │ │ └── example-generator.md
|
||||
│ │ ├── mcp/
|
||||
│ │ │ └── github-docs-config.json
|
||||
│ │ ├── templates/
|
||||
│ │ │ ├── api-endpoint.md
|
||||
│ │ │ ├── function-docs.md
|
||||
│ │ │ └── adr-template.md
|
||||
│ │ └── README.md
|
||||
│ └── README.md
|
||||
│
|
||||
├── 08-checkpoints/ # チェックポイント
|
||||
│ ├── checkpoint-examples.md
|
||||
│ └── README.md
|
||||
│
|
||||
├── 09-advanced-features/ # 高度な機能
|
||||
│ ├── config-examples.json
|
||||
│ ├── planning-mode-examples.md
|
||||
│ └── README.md
|
||||
│
|
||||
└── 10-cli/ # CLI 利用
|
||||
└── README.md
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ユースケース別クイックスタート
|
||||
|
||||
### コード品質とレビュー
|
||||
```bash
|
||||
# スラッシュコマンドをインストール
|
||||
cp 01-slash-commands/optimize.md .claude/commands/
|
||||
|
||||
# サブエージェントをインストール
|
||||
cp 04-subagents/code-reviewer.md .claude/agents/
|
||||
|
||||
# スキルをインストール
|
||||
cp -r 03-skills/code-review ~/.claude/skills/
|
||||
|
||||
# あるいは完全プラグインをインストール
|
||||
/plugin install pr-review
|
||||
```
|
||||
|
||||
### DevOps とデプロイ
|
||||
```bash
|
||||
# プラグインをインストール (すべて含む)
|
||||
/plugin install devops-automation
|
||||
```
|
||||
|
||||
### ドキュメント
|
||||
```bash
|
||||
# スラッシュコマンドをインストール
|
||||
cp 01-slash-commands/generate-api-docs.md .claude/commands/
|
||||
|
||||
# サブエージェントをインストール
|
||||
cp 04-subagents/documentation-writer.md .claude/agents/
|
||||
|
||||
# スキルをインストール
|
||||
cp -r 03-skills/doc-generator ~/.claude/skills/
|
||||
|
||||
# あるいは完全プラグインをインストール
|
||||
/plugin install documentation
|
||||
```
|
||||
|
||||
### チーム標準
|
||||
```bash
|
||||
# プロジェクトメモリをセットアップ
|
||||
cp 02-memory/project-CLAUDE.md ./CLAUDE.md
|
||||
|
||||
# チームの標準に合わせて編集
|
||||
```
|
||||
|
||||
### 外部統合
|
||||
```bash
|
||||
# 環境変数を設定
|
||||
export GITHUB_TOKEN="your_token"
|
||||
export DATABASE_URL="postgresql://..."
|
||||
|
||||
# MCP 設定をインストール (プロジェクトスコープ)
|
||||
cp 05-mcp/multi-mcp.json .mcp.json
|
||||
```
|
||||
|
||||
### 自動化と検証
|
||||
```bash
|
||||
# フックをインストール
|
||||
mkdir -p ~/.claude/hooks
|
||||
cp 06-hooks/*.sh ~/.claude/hooks/
|
||||
chmod +x ~/.claude/hooks/*.sh
|
||||
|
||||
# 設定でフックを構成 (~/.claude/settings.json)
|
||||
# 06-hooks/README.md を参照
|
||||
```
|
||||
|
||||
### 安全な実験
|
||||
```bash
|
||||
# チェックポイントはユーザープロンプトのたびに自動作成される
|
||||
# 巻き戻し: Esc+Esc を押すか /rewind
|
||||
# 巻き戻しメニューから何を復元するか選択
|
||||
|
||||
# 例は 08-checkpoints/README.md を参照
|
||||
```
|
||||
|
||||
### 高度なワークフロー
|
||||
```bash
|
||||
# 高度な機能を設定
|
||||
# 09-advanced-features/config-examples.json を参照
|
||||
|
||||
# プランニングモードを使う
|
||||
/plan Implement feature X
|
||||
|
||||
# 権限モードを使う
|
||||
claude --permission-mode plan # コードレビュー (読み取り専用)
|
||||
claude --permission-mode acceptEdits # 編集を自動承認
|
||||
claude --permission-mode auto # 安全な操作を自動承認
|
||||
|
||||
# CI/CD のためのヘッドレスモードで実行
|
||||
claude -p "Run tests and report results"
|
||||
|
||||
# バックグラウンドタスクを実行
|
||||
Run tests in background
|
||||
|
||||
# 完全ガイドは 09-advanced-features/README.md を参照
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 機能カバレッジマトリクス
|
||||
|
||||
| カテゴリ | コマンド | エージェント | MCP | フック | スクリプト | テンプレート | ドキュメント | 画像 | 合計 |
|
||||
|----------|----------|--------|-----|-------|---------|-----------|------|--------|-------|
|
||||
| **01 スラッシュコマンド** | 8 | - | - | - | - | - | 1 | 1 | **10** |
|
||||
| **02 メモリ** | - | - | - | - | - | 3 | 1 | 2 | **6** |
|
||||
| **03 スキル** | - | - | - | - | 5 | 9 | 1 | - | **28** |
|
||||
| **04 サブエージェント** | - | 8 | - | - | - | - | 1 | - | **9** |
|
||||
| **05 MCP** | - | - | 4 | - | - | - | 1 | - | **5** |
|
||||
| **06 フック** | - | - | - | 8 | - | - | 1 | - | **9** |
|
||||
| **07 プラグイン** | 11 | 9 | 3 | 3 | 3 | 3 | 4 | - | **40** |
|
||||
| **08 チェックポイント** | - | - | - | - | - | - | 1 | 1 | **2** |
|
||||
| **09 高度な機能** | - | - | - | - | - | - | 1 | 2 | **3** |
|
||||
| **10 CLI** | - | - | - | - | - | - | 1 | - | **1** |
|
||||
|
||||
---
|
||||
|
||||
## 学習パス
|
||||
|
||||
### 初級(第 1 週)
|
||||
1. ✅ `README.md` を読む
|
||||
2. ✅ スラッシュコマンドを 1〜2 個インストール
|
||||
3. ✅ プロジェクトメモリファイルを作成
|
||||
4. ✅ 基本コマンドを試す
|
||||
|
||||
### 中級(第 2〜3 週)
|
||||
1. ✅ GitHub MCP をセットアップ
|
||||
2. ✅ サブエージェントをインストール
|
||||
3. ✅ タスク委譲を試す
|
||||
4. ✅ スキルをインストール
|
||||
|
||||
### 上級(第 4 週〜)
|
||||
1. ✅ 完全プラグインをインストール
|
||||
2. ✅ カスタムスラッシュコマンドを作成
|
||||
3. ✅ カスタムサブエージェントを作成
|
||||
4. ✅ カスタムスキルを作成
|
||||
5. ✅ 自分のプラグインを構築
|
||||
|
||||
### エキスパート(第 5 週〜)
|
||||
1. ✅ 自動化のためのフックをセットアップ
|
||||
2. ✅ 実験のためチェックポイントを使う
|
||||
3. ✅ プランニングモードを設定
|
||||
4. ✅ 権限モードを効果的に使う
|
||||
5. ✅ CI/CD のためヘッドレスモードをセットアップ
|
||||
6. ✅ セッション管理を習得
|
||||
|
||||
---
|
||||
|
||||
## キーワード検索
|
||||
|
||||
### パフォーマンス
|
||||
- `01-slash-commands/optimize.md` — パフォーマンス分析
|
||||
- `04-subagents/code-reviewer.md` — パフォーマンスレビュー
|
||||
- `03-skills/code-review/` — パフォーマンスメトリクス
|
||||
- `07-plugins/pr-review/agents/performance-analyzer.md` — パフォーマンス専門家
|
||||
|
||||
### セキュリティ
|
||||
- `04-subagents/secure-reviewer.md` — セキュリティレビュー
|
||||
- `03-skills/code-review/` — セキュリティ分析
|
||||
- `07-plugins/pr-review/` — セキュリティチェック
|
||||
|
||||
### テスト
|
||||
- `04-subagents/test-engineer.md` — テストエンジニア
|
||||
- `07-plugins/pr-review/commands/check-tests.md` — テストカバレッジ
|
||||
|
||||
### ドキュメント
|
||||
- `01-slash-commands/generate-api-docs.md` — API ドキュメントコマンド
|
||||
- `04-subagents/documentation-writer.md` — ドキュメント作成エージェント
|
||||
- `03-skills/doc-generator/` — ドキュメント生成スキル
|
||||
- `07-plugins/documentation/` — 完全ドキュメントプラグイン
|
||||
|
||||
### デプロイ
|
||||
- `07-plugins/devops-automation/` — 完全 DevOps ソリューション
|
||||
|
||||
### 自動化
|
||||
- `06-hooks/` — イベント駆動自動化
|
||||
- `06-hooks/pre-commit.sh` — コミット前自動化
|
||||
- `06-hooks/format-code.sh` — 自動整形
|
||||
- `09-advanced-features/` — CI/CD のためのヘッドレスモード
|
||||
|
||||
### 検証
|
||||
- `06-hooks/security-scan.sh` — セキュリティ検証
|
||||
- `06-hooks/validate-prompt.sh` — プロンプト検証
|
||||
|
||||
### 実験
|
||||
- `08-checkpoints/` — 巻き戻しによる安全な実験
|
||||
- `08-checkpoints/checkpoint-examples.md` — 実用例
|
||||
|
||||
### プランニング
|
||||
- `09-advanced-features/planning-mode-examples.md` — プランニングモード例
|
||||
- `09-advanced-features/README.md` — 拡張思考
|
||||
|
||||
### 設定
|
||||
- `09-advanced-features/config-examples.json` — 設定例
|
||||
|
||||
---
|
||||
|
||||
## 注意事項
|
||||
|
||||
- すべての例はそのまま利用できる
|
||||
- 自分のニーズに合わせて改造する
|
||||
- 例は Claude Code のベストプラクティスに従う
|
||||
- 各カテゴリには詳細手順つきの独自 README がある
|
||||
- スクリプトには適切なエラー処理が含まれる
|
||||
- テンプレートはカスタマイズ可能
|
||||
|
||||
---
|
||||
|
||||
## コントリビュート
|
||||
|
||||
例題を追加したい場合は次の構造に従う:
|
||||
1. 適切なサブディレクトリを作成
|
||||
2. 利用方法つき README.md を含める
|
||||
3. 命名規則に従う
|
||||
4. 入念にテストする
|
||||
5. この索引を更新する
|
||||
|
||||
---
|
||||
|
||||
**最終更新**:2026 年 4 月 24 日
|
||||
**Claude Code バージョン**:2.1.119
|
||||
**情報源**:
|
||||
- https://code.claude.com/docs/en/overview
|
||||
- https://code.claude.com/docs/en/hooks
|
||||
- https://code.claude.com/docs/en/commands
|
||||
- https://github.com/anthropics/claude-code/releases/tag/v2.1.119
|
||||
**互換モデル**:Claude Sonnet 4.6、Claude Opus 4.7、Claude Haiku 4.5
|
||||
**例題総数**:100 ファイル超
|
||||
**カテゴリ**:10 機能
|
||||
**フック**:自動化スクリプト 8 個
|
||||
**設定例**:10 シナリオ以上
|
||||
**すぐ使える**:すべての例
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user