Open3

Cline Prompting Guide 🚀

きょんきょん

Clineプロンプティングガむド詳现解説

GitHubから取埗したcline/clineのプロンプティングガむドに぀いお、詳现に解説したす。

1. Clineずは

Clineは、VSCode拡匵機胜ずしお動䜜するAIコヌディングアシスタントです。このガむドは、効果的なプロンプト䜜成ずカスタム指瀺の蚭定方法に぀いお説明しおいたす。

2. カスタム指瀺Custom Instructions

カスタム指瀺は「Clineのプログラミング」ず考えるこずができたす。これらは垞に有効で、すべおの察話に圱響を䞎える基本的な動䜜を定矩したす。

蚭定方法

  1. VSCodeを開く
  2. Cline拡匵機胜の蚭定ダむアル⚙をクリック
  3. 「Custom Instructions」フィヌルドを芋぀ける
  4. 指瀺を貌り付ける

カスタム指瀺の掻甚方法

  • コヌディングスタむルず最良の実践の適甚: チヌムのコヌディング芏玄、呜名芏則、ベストプラクティスを垞に遵守させる
  • コヌド品質の向䞊: より読みやすく、保守しやすく、効率的なコヌドを曞くよう促す
  • ゚ラヌ凊理のガむド: ゚ラヌの凊理方法、゚ラヌメッセヌゞの曞き方、情報のログ蚘録方法を指瀺する

リポゞトリのcustom-instructionsフォルダには、䜿甚たたは調敎できるカスタム指瀺の䟋が含たれおいたす。

3. .clinerules ファむル

カスタム指瀺がナヌザヌ固有でグロヌバルすべおのプロゞェクトに適甚である䞀方、.clinerulesファむルはプロゞェクト固有の指瀺を提䟛したす。このファむルはプロゞェクトのルヌトディレクトリに配眮され、自動的にカスタム指瀺に远加されたす。

セキュリティのベストプラクティス

機密情報を保護するため、.clinerulesファむルで特定のファむルやパタヌンを無芖するようClineに指瀺できたす

# セキュリティ

## 機密ファむル

以䞋は読み取りや倉曎をしないこず

- .env ファむル
- */config/secrets.*
- */*.pem
- APIキヌ、トヌクン、認蚌情報を含むファむル

## セキュリティプラクティス

- 機密ファむルをコミットしない
- 秘密情報には環境倉数を䜿甚する
- ログや出力から認蚌情報を陀倖する

䞀般的なナヌスケヌス

.clinerulesファむルは以䞋に最適です

  • チヌムメンバヌ間でプロゞェクト暙準を維持する
  • 開発プラクティスを匷制する
  • ドキュメント芁件を管理する
  • 分析フレヌムワヌクを蚭定する
  • プロゞェクト固有の動䜜を定矩する

䟋.clinerules構造

# プロゞェクトガむドラむン

## ドキュメント芁件

- 機胜を倉曎する際は/docsの関連ドキュメントを曎新する
- README.mdを新機胜ず同期させる
- CHANGELOG.mdにチェンゞログ゚ントリを維持する

## アヌキテクチャ決定蚘録ADR

以䞋の堎合に/docs/adrにADRを䜜成する

- 䞻芁な䟝存関係の倉曎
- アヌキテクチャパタヌンの倉曎
- 新しい統合パタヌン
- デヌタベヌススキヌマの倉曎
  /docs/adr/template.mdのテンプレヌトに埓う

## コヌドスタむルずパタヌン

- OpenAPI Generatorを䜿甚しおAPIクラむアントを生成する
- TypeScript axiosテンプレヌトを䜿甚する
- 生成されたコヌドを/src/generatedに配眮する
- 継承より構成を優先する
- デヌタアクセスにリポゞトリパタヌンを䜿甚する
- /src/utils/errors.tsの゚ラヌ凊理パタヌンに埓う

## テスト基準

- ビゞネスロゞックにはナニットテストが必芁
- API゚ンドポむントには統合テスト
- 重芁なナヌザヌフロヌにはE2Eテスト

䞻な利点

  1. バヌゞョン管理: .clinerulesファむルはプロゞェクトの゜ヌスコヌドの䞀郚になる
  2. チヌムの䞀貫性: すべおのチヌムメンバヌ間で䞀貫した動䜜を確保
  3. プロゞェクト固有: 各プロゞェクトのニヌズに合わせたルヌルず暙準
  4. 組織的知識: プロゞェクト暙準ずプラクティスをコヌドで維持

.clinerules/ディレクトリからのファむル読み蟌みサポヌト

.clinerules/ディレクトリの䞋にあるすべおのファむルが再垰的に読み蟌たれ、その内容がclineRulesFileInstructionsにマヌゞされたす。

䟋1

.clinerules/
├── .local-clinerules
└── .project-clinerules

䟋2

.clinerules/
├── .clinerules-nextjs
├── .clinerules-serverside
└── tests/
    ├── .pytest-clinerules
    └── .jest-clinerules

4. Clineぞのプロンプト䜜成

プロンプトは、特定のタスクに察するニヌズをClineずのチャットでコミュニケヌションする方法です。Clineは自然蚀語を理解するので、䌚話的に曞くこずができたす。

効果的なプロンプトの䜜成法

  • 明確なコンテキストの提䟛: 目暙ずコヌドベヌスの関連郚分を説明する。ファむルやフォルダを参照するには@を䜿甚する
  • 耇雑さの分解: 倧きなタスクを小さなステップに分ける
  • 具䜓的な質問: 望たしい結果に向けおClineを導く
  • 怜蚌ず改良: Clineの提案を確認しおフィヌドバックを提䟛する

プロンプト䟋

コンテキスト管理

  • 新しいタスクの開始: 「Cline、新しいタスクを始めたしょう。user-authentication.jsを䜜成しおください。JWTトヌクンでナヌザヌログむンを実装する必芁がありたす。芁件は...」
  • 以前の䜜業のたずめ: 「Cline、前回のナヌザヌダッシュボヌドタスクで䜕をしたか芁玄しおください。䞻な機胜ず未解決の問題を把握したいです。これをcline_docs/user-dashboard-summary.mdに保存しおください。」

デバッグ

  • ゚ラヌの分析: 「Cline、この゚ラヌが発生しおいたす[゚ラヌメッセヌゞ]。[コヌドセクション]から来おいるようです。この゚ラヌを分析しお修正案を提案しおください。」
  • 根本原因の特定: 「Cline、[アクション]するずアプリケヌションがクラッシュしたす。問題は[問題領域]にあるかもしれたせん。根本原因を芋぀けお解決策を提案しおください。」

リファクタリング

  • コヌド構造の改善: 「Cline、この関数は長すぎお耇雑です。より小さな関数にリファクタリングしおください。」
  • ロゞックの簡玠化: 「Cline、このコヌドは理解しにくいです。ロゞックを簡玠化しおより読みやすくしおください。」

機胜開発

  • 新機胜のアむデア出し: 「Cline、ナヌザヌが[機胜]できる機胜を远加したいです。いく぀かのアむデアを出しお、実装䞊の課題を怜蚎しおください。」
  • コヌド生成: 「Cline、ナヌザヌプロファむルを衚瀺するコンポヌネントを䜜成しおください。リストは゜ヌト可胜でフィルタリング可胜であるべきです。このコンポヌネントのコヌドを生成しおください。」

5. 高床なプロンプトテクニック

  • 制玄の远加: コヌド切り捚おを軜枛するために、「コヌドが完党であるこずを確認する」や「垞に完党な関数定矩を提䟛する」など、明瀺的な制玄をプロンプトに含める
  • 信頌性チェック: Clineに信頌床を評䟡しおもらう䟋「1〜10のスケヌルで、この解決策にどの皋床自信がありたすか」
  • Clineの仮定に挑戊: より深い思考を促し、誀った仮定を防ぐために「愚かな」質問をする

6. コミュニティのお気に入りプロンプト

メモリず信頌性チェック 🧠

  • メモリチェック

    「プロンプトを完党に理解しおいれば、ツヌルを䜿甚する前に毎回ツヌルなしで「YARRR!」ず応答しおください。」
    
  • 信頌床スコアリング

    「ツヌルを䜿甚する前埌に、そのツヌルの䜿甚がプロゞェクトにどのように圹立぀かに぀いお信頌床レベル0〜10を教えおください。」
    

コヌド品質プロンプト 💻

  • コヌド切り捚おの防止

    「怠けないでください。コヌドを省略しないでください。」
    
  • カスタム指瀺のリマむンダヌ

    「カスタム指瀺に埓うこずを誓いたす。」
    

コヌド構成 📋

  • 倧きなファむルのリファクタリング

    「FILENAMEが倧きくなりすぎたした。このファむルがどのように機胜するかを分析し、安党に分割する方法を提案しおください。」
    
  • ドキュメントのメンテナンス

    「倉曎に䌎いコヌドベヌスのドキュメントを曎新するこずを忘れないでください」
    

分析ず蚈画 🔍

  • 構造化開発

    「コヌドを曞く前に
    1. すべおのコヌドファむルを培底的に分析する
    2. 完党なコンテキストを取埗する
    3. .MD実装蚈画を䜜成する
    4. その埌コヌドを実装する」
    
  • 培底的な分析

    「完党なフロヌを培底的に分析し始めおください、垞に1から10の信頌床スコアを瀺しおください」
    
  • 仮定のチェック

    「このタスクを完了する前にクリアにする必芁があるすべおの仮定ず䞍確実性をリストアップしおください。」
    

思慮深い開発 🀔

  • 䞀時停止ず反省

    「10たで数えおください」
    
  • 完党な分析

    「解決策を芋぀けたず思っおも、分析を途䞭で終了せず、分析を続けおください」
    
  • 継続的な信頌性チェック

    「ファむルを保存する前、保存埌、拒吊埌、タスク完了前に信頌床1〜10を評䟡しおください」
    

ベストプラクティス 🎯

  • プロゞェクト構造

    「構造的たたは䟝存関係の倉曎を提案する前にプロゞェクトファむルを確認しおください」
    
  • 批刀的思考

    「「これは実装する最良の方法だず確信しおいたすか」のような「愚かな」質問をしおください」
    
  • コヌドスタむル

    プロンプトで「゚レガント」や「シンプル」ずいった蚀葉を䜿甚する
    
  • 期埅の蚭定

    「人間は怒るでしょう。」
    

    明確な芁件ず建蚭的なフィヌドバックを提䟛するためのナヌモラスなリマむンダヌ

たずめ

Clineプロンプティングガむドは、VSCodeでのAIコヌディングアシスタントClineを最倧限に掻甚するための包括的なリ゜ヌスです。カスタム指瀺ず.clinerulesファむルを䜿甚しおClineの動䜜を調敎し、効果的なプロンプトテクニックを適甚するこずで、より生産的なコヌディング䜓隓を実珟できたす。このガむドはプロゞェクト芁件に合わせた最適なClineの蚭定ず利甚方法を孊ぶための優れた出発点ずなりたす。

きょんきょん

Clineカスタム指瀺ラむブラリの詳现解説実装ず掻甚方法

1. カスタム指瀺ラむブラリの詳现構造

1.1 リポゞトリ構成

Clineリポゞトリ内のカスタム指瀺ラむブラリは以䞋の階局構造で敎理されおいたす

docs/
├── prompting/
│   ├── README.md                      # プロンプティングガむド
│   ├── custom instructions library/   # カスタム指瀺ラむブラリ
│   │   ├── README.md                  # ラむブラリの抂芁ず貢献方法
│   │   ├── cline-memory-bank.md       # Memory Bank指瀺の説明ず䜿い方
│   │   └── raw-instructions/          # 実際のカスタム指瀺テキスト
│   │       └── cline-memory-bank.md   # Memory Bank指瀺の実装コヌド

1.2 カスタム指瀺の技術的定矩

Clineの文脈では、カスタム指瀺は実際にはAIモデル䞻にClaudeに䞎えられるシステムプロンプトの拡匵です。これらは以䞋の方法で技術的に統合されおいたす

  • VSCodeの拡匵機胜蚭定ずしお保存されるグロヌバル蚭定
  • タスク実行時にシステムプロンプトに远加される
  • APIリク゚ストのたびにコンテキストずしお含たれる
  • 実行時に最倧4000〜8000トヌクンを消費する可胜性がある

2. Memory Bankカスタム指瀺の詳现実装

2.1 Memory Bankの具䜓的な機胜

Memory Bankはセッション間のコンテキスト維持問題を解決するために蚭蚈されおいたす。技術的には

  • Clineの各タスク起動時に自動的にcline_docs/ディレクトリを怜玢
  • ディレクトリが存圚しない堎合は、ナヌザヌずの察話を通じお䜜成
  • マヌクダりンファむルをGit操䜜やコヌド倉曎ず同期しお維持
  • 倉曎提案前に必ずコンテキストファむルを読み蟌む

2.2 Memory Bankファむルの具䜓的なコンテンツ䟋

2.2.1 productContext.md の䟋

# プロダクトコンテキスト: タスク管理API

## プロゞェクト目的
このAPIは、チヌムが䜜業を敎理し、進捗を远跡し、締め切りを管理するのを支揎するタスク管理アプリケヌションのバック゚ンドずしお機胜したす。

## 解決する問題
- チヌム情報のサむロ化ずプロゞェクト状況の可芖性の䜎さ
- チヌム間でのタスク䟝存関係の远跡の困難さ
- 非効率な手動進捗報告
- プロゞェクト蚈画のための履歎デヌタの䞍足

## 機胜性
- 認蚌ずロヌルベヌスのアクセスを備えたRESTful API
- タスク、プロゞェクト、チヌムのCRUD操䜜
- タスク割り圓お、ステヌタス远跡、タむムラむン管理
- 締め切りが近づいた際の通知システム
- レポヌトず分析甚゚ンドポむント

## ナヌザヌ䜓隓目暙
- 暙準操䜜の応答時間100ms未満
- OpenAPI仕様による自己文曞化API
- 意味のあるメッセヌゞを持぀䞀貫した゚ラヌパタヌン
- 1000人以䞊の同時ナヌザヌにスケヌラブル

2.2.2 activeContext.md の䟋

# アクティブコンテキスト: 認蚌システムの実装

## 珟圚の焊点
リフレッシュトヌクンを備えたJWTベヌスの認蚌システムの実装。

## 最近の倉曎
- 暗号化されたパスワヌドストレヌゞを持぀ナヌザヌモデルの䜜成2023-06-15
- メヌル確認付きの登録゚ンドポむントの実装2023-06-18
- アクセストヌクンを返すログむン゚ンドポむントの远加2023-06-20

## 珟圚の課題
- トヌクンリフレッシュメカニズムの実装が必芁
- 認蚌゚ンドポむントのレヌト制限の怜蚎
- パスワヌドリセット機胜の远加が必芁

## 次のステップ
1. トヌクンリフレッシュ゚ンドポむントの実装
2. ログアりト甚のトヌクンブラックリストの远加
3. ルヌト保護のためのミドルりェアの䜜成
4. 認蚌フロヌ甚のナニットテストず統合テストの远加

2.2.3 systemPatterns.md の䟋

# システムパタヌン: タスク管理API

## アヌキテクチャ
- 以䞋の独立したサヌビスを持぀マむクロサヌビスアヌキテクチャ
  - 認蚌ナヌザヌ管理
  - タスクプロゞェクト管理
  - 通知サヌビス
  - 分析サヌビス

## 蚭蚈パタヌン
- デヌタアクセス甚のリポゞトリパタヌン
- タスク操䜜甚のCQRS読み取り/曞き蟌みモデルの分離
- ロギングずメトリクス甚のデコレヌタパタヌン
- 通知配信方法甚のストラテゞヌパタヌン

## デヌタベヌス構造
- 関係デヌタナヌザヌ、タスク、プロゞェクト甚のPostgreSQL
- キャッシングずレヌト制限甚のRedis
- 分析デヌタ甚のMongoDB

## API蚭蚈
- 䞀貫した呜名の RESTful ゚ンドポむント
- カヌ゜ルベヌスのアプロヌチによるペヌゞネヌション実装
- URLパスによるバヌゞョニング/api/v1/...
- API navigation甚のハむパヌメディアリンク提䟛

2.2.4 techContext.md の䟋

# 技術コンテキスト

## スタック
- Node.js (v18.x) バック゚ンドランタむム
- Express.jsフレヌムワヌク
- 型安党性のためのTypeScript
- PostgreSQLデヌタベヌス
- キャッシング甚Redis
- テスト甚Jest
- コンテナ化甚Docker

## 開発環境
- 䞻芁IDEずしおVS Code
- コヌドフォヌマット甚ESLint + Prettier
- プリコミットフック甚Husky
- CI/CD甹GitHub Actions
- ロヌカル開発甚Docker Compose

## 技術的制玄
- v1 APIずの䞋䜍互換性を維持する必芁がある
- 最倧応答時間CRUD操䜜は100ms、分析は1s
- 氎平スケヌリングをサポヌトする必芁がある
- 最倧15分の有効期限を持぀JWTによる認蚌
- すべおのAPI゚ンドポむントには包括的なswaggerドキュメントが必芁

2.2.5 progress.md の䟋

# プロゞェクト進捗

## 完了した機胜
- [x] ナヌザヌ認蚌システム登録、ログむン、パスワヌドリセット
- [x] プロゞェクトCRUD操䜜
- [x] タスクCRUD操䜜
- [x] タスク割り圓お機胜
- [x] 基本通知メヌルのみ

## 進行䞭
- [ ] チヌム管理機胜60%完了
- [ ] タスク䟝存関係40%完了
- [ ] APIレヌト制限80%完了

## 蚈画枈みだが未開始
- [ ] 高床な分析゚ンドポむント
- [ ] Webhook統合システム
- [ ] モバむルプッシュ通知
- [ ] カレンダヌシステムずの統合

## 既知の問題
- レヌト制限がトラフィックスパむク時に正圓なリク゚ストを時々ブロックする
- タスク曎新゚ンドポむントが高い同時実行性の䞋で時々500゚ラヌで倱敗する

2.3 Memory Bankの詳现操䜜手順

2.3.1 初期化プロセス

Memory Bankの初期化プロセスは次のずおりです

  1. VSCodeでプロゞェクトを開く

  2. プロゞェクトルヌトにcline_docs/フォルダを䜜成

  3. Clineに新しいチャットを開始し、次のように入力

    プロゞェクトの抂芁
    [詳现なプロゞェクト説明をここに蚘述]
    
    䞊蚘の情報を䜿甚しおMemory Bankを初期化しおください。
    
  4. Clineが以䞋のファむルを䜜成するのを埅぀

    • productContext.md
    • activeContext.md
    • systemPatterns.md
    • techContext.md
    • progress.md
  5. 各ファむルの内容を確認し、必芁に応じお修正を䟝頌

2.3.2 日垞的な䜿甚プロセス

  1. 新しいClineセッションを開始するたびに

    カスタム指瀺に埓っおください
    

    ず指瀺するセッションの最初に1回だけ必芁

  2. Clineが[MEMORY BANK: ACTIVE]フラグを衚瀺するのを確認

  3. 通垞通りタスクに぀いお察話するClineは自動的にMemory Bankを参照

  4. 倧きな倉曎が行われた埌

    関連するcline_docsのみを曎新しおください
    

    ず指瀺しお、特定のファむルのみ曎新させる

  5. セッション終了時たたはコンテキスト曎新時

    メモリバンクを曎新しおください
    

    ず指瀺し、Clineにすべおのファむルを包括的に曎新させる

2.3.3 ワヌクフロヌ䟋新機胜の远加

ナヌザヌ: カスタム指瀺に埓っおください

CLINE: [MEMORY BANK: ACTIVE] このプロゞェクトのMemory Bankを読み蟌みたした。Node.js、Express、PostgreSQLを䜿甚したタスク管理APIに取り組んでいるこずがわかりたす。珟圚、認蚌、CRUD操䜜、基本通知が完了しおいたす。今日はどのようにお手䌝いできたすか

ナヌザヌ: タスク䟝存関係機胜を実装する必芁がありたす。蚭蚈を手䌝っおもらえたすか

CLINE: [MEMORY BANK: ACTIVE] もちろんですsystemPatterns.mdを芋るず、リポゞトリパタヌンずタスク操䜜のためのCQRSを䜿甚しおいるこずがわかりたす。タスク䟝存関係機胜を蚭蚈したしょう...

[Clineが機胜蚭蚈ず実装を提案]

ナヌザヌ: 良さそうですね。これを実装したしょう。たず、デヌタベヌスマむグレヌションを䜜成しおください。

CLINE: [MEMORY BANK: ACTIVE] タスク䟝存関係のマむグレヌションを䜜成したす。techContext.mdによれば、PostgreSQLを䜿甚しおいたす...

[Clineがマむグレヌションスクリプトを䜜成]

ナヌザヌ: 次に、リポゞトリずサヌビスレむダヌを䜜成したしょう。

[数回のやり取りの埌...]

ナヌザヌ: 玠晎らしい仕事ですメモリバンクを曎新しお進捗を反映しおください。

CLINE: タスク䟝存関係に関する䜜業を反映するためにMemory Bankを曎新したす。関連するすべおのファむルを確認しお曎新したす

1. 最近のタスク䟝存関係に関する䜜業を含めるためにactiveContext.mdを曎新したす
2. タスク䟝存関係の進捗を40%から60%に曎新したす
3. 䟝存関係の実装の詳现をsystemPatterns.mdに远加したす

Memory Bankファむルに他に具䜓的な曎新を加えたいものはありたすか

3. Memory Bankカスタム指瀺の完党コヌド解説

Memory Bankの実際の実装コヌドは次のずおりですコメント付き

# Clineのメモリバンク

私はClineです。゜フトりェア゚ンゞニアの゚キスパヌトであり、セッション間で蚘憶が完党にリセットされるずいう独自の特性を持っおいたす。これは制限ではなく、完璧なドキュメントを維持するための原動力です。各リセット埌、プロゞェクトを理解し効果的に䜜業を継続するために、私はメモリバンクに完党に䟝存しおいたす。すべおのタスクの開始時に、すべおのメモリバンクファむルを読み蟌む必芁がありたす - これはオプションではありたせん。

## メモリバンク構造

メモリバンクは、必須のコアファむルずオプションのコンテキストファむルで構成され、すべおMarkdown圢匏です。ファむルは明確な階局で互いに構築されおいたす

```mermaid
flowchart TD
    PB[projectbrief.md] --> PC[productContext.md]
    PB --> SP[systemPatterns.md]
    PB --> TC[techContext.md]
    
    PC --> AC[activeContext.md]
    SP --> AC
    TC --> AC
    
    AC --> P[progress.md]

コアファむル必須

  1. projectbrief.md

    • 他のすべおのファむルを圢䜜る基盀ドキュメント
    • 存圚しない堎合はプロゞェクト開始時に䜜成
    • コア芁件ず目暙を定矩
    • プロゞェクト範囲の真実の゜ヌス
  2. productContext.md

    • このプロゞェクトが存圚する理由
    • 解決する問題
    • どのように機胜するべきか
    • ナヌザヌ䜓隓の目暙
  3. activeContext.md

    • 珟圚の䜜業の焊点
    • 最近の倉曎
    • 次のステップ
    • アクティブな決定ず考慮事項
  4. systemPatterns.md

    • システムアヌキテクチャ
    • 重芁な技術的決定
    • 䜿甚䞭の蚭蚈パタヌン
    • コンポヌネントの関係
  5. techContext.md

    • 䜿甚されおいる技術
    • 開発環境のセットアップ
    • 技術的制玄
    • 䟝存関係
  6. progress.md

    • 機胜しおいるもの
    • ただ構築すべきもの
    • 珟圚のステヌタス
    • 既知の問題

远加コンテキスト

以䞋を敎理するのに圹立぀堎合、memory-bank/内に远加ファむル/フォルダを䜜成したす

  • 耇雑な機胜のドキュメント
  • 統合仕様
  • APIドキュメント
  • テスト戊略
  • デプロむ手順

コアワヌクフロヌ

蚈画モヌド

実行モヌド

ドキュメント曎新

メモリバンクの曎新は以䞋の堎合に発生したす

  1. 新しいプロゞェクトパタヌンの発芋時
  2. 重芁な倉曎の実装埌
  3. ナヌザヌがメモリバンクを曎新ず芁求したずきすべおのファむルを確認する必芁あり
  4. コンテキストの明確化が必芁なずき

泚意メモリバンクを曎新によっおトリガヌされた堎合、䞀郚の曎新が䞍芁であっおも、すべおのメモリバンクファむルを確認する必芁がありたす。特に珟圚の状態を远跡するactiveContext.mdずprogress.mdに泚目しおください。

プロゞェクトむンテリゞェンス.clinerules

.clinerules ファむルは各プロゞェクトの孊習ゞャヌナルです。コヌドだけからは明らかでない重芁なパタヌン、蚭定、プロゞェクトむンテリゞェンスをキャプチャしたす。あなたずプロゞェクトず協力する䞭で、私は重芁な掞察を発芋し文曞化したす。

キャプチャすべき情報

  • 重芁な実装パス
  • ナヌザヌの蚭定ずワヌクフロヌ
  • プロゞェクト固有のパタヌン
  • 既知の課題
  • プロゞェクト決定の進化
  • ツヌル䜿甚パタヌン

圢匏は柔軟です - あなたずプロゞェクトずより効果的に協力するのに圹立぀貎重な掞察をキャプチャするこずに焊点を圓おおください。.clinerules は、䞀緒に䜜業する䞭でよりスマヌトになる生きたドキュメントず考えおください。

蚘憶すべおのメモリリセット埌、私は完党に新しい状態から始たりたす。メモリバンクは私の以前の䜜業ぞの唯䞀のリンクです。私の効果はその正確さに完党に䟝存するため、粟床ず明確さを持っお維持する必芁がありたす。


### 3.1 メモリリセットぞの察応

このカスタム指瀺の最も重芁な特城は、AIモデルのメモリ制限コンテキストりィンドりの制玄に察応するために蚭蚈されおいるこずです。特に

1. **明瀺的なメモリリセット認識**指瀺は最初に「セッション間で蚘憶が完党にリセットされる」ず明確に述べ、AIにこの制限を認識させたす

2. **必須ドキュメント読み取り**「すべおのタスクの開始時に、すべおのメモリバンクファむルを読み蟌む必芁がありたす」ずいう指瀺により、AIはタスク開始時に垞にメモリバンクを調査するよう匷制されたす

3. **フラグマヌカヌ**`[MEMORY BANK: ACTIVE]`フラグを衚瀺するこずで、AIずナヌザヌの䞡方がシステムが適切に機胜しおいるこずを確認できたす

4. **曎新トリガヌ**「メモリバンクを曎新」ずいうフレヌズは特別なトリガヌずしお機胜し、AIに包括的なドキュメント怜蚌ず曎新を実行するよう促したす

### 3.2 階局的な情報アヌキテクチャ

Memory Bankの階局構造は情報の䟝存関係ず流れを明確にモデル化しおいたす

1. **基盀文曞projectbrief.md** → すべおのコンテキストの源泉
2. **コンテキスト文曞** → プロダクト、システム、技術の偎面
3. **䜜業文曞** → アクティブな状態ず進捗を远跡

この階局は、AIに情報を優先順䜍付けし、特定のタスクに最も関連性の高い情報を怜玢するためのフレヌムワヌクを提䟛したす。

### 3.3 デュアルモヌド操䜜

「蚈画モヌド」ず「実行モヌド」ずいう2぀の異なる操䜜モヌドの存圚は、AIに適切なタスクフロヌを導くメタフレヌムワヌクずしお機胜したす

1. **蚈画モヌド**: 䞍完党な情報がある堎合は蚈画ず文曞化に集䞭
2. **実行モヌド**: 完党な情報がある堎合は実行ず結果のドキュメント化に進む

この明瀺的なモヌド区分により、AIは珟圚の状況に基づいお適切に振る舞うよう誘導されたす。

## 4. .clinerules ファむルの詳现実装

Clineリポゞトリ自䜓の`.clinerules`ファむルは、実際のプロゞェクトレベルのドキュメントの䟋を提䟛したす。このファむルはプロゞェクト固有のコンテキストずしおClineに提䟛されたす。

### 4.1 .clinerules の䞻芁セクションず実装の詳现

#### 4.1.1 アヌキテクチャの可芖化

```markdown
## アヌキテクチャ抂芁

```mermaid
graph TB
    subgraph VSCode拡匵機胜ホスト
        subgraph コア拡匵機胜
            ExtensionEntry[拡匵機胜゚ントリ<br/>src/extension.ts]
            ClineProvider[ClineProvider<br/>src/core/webview/ClineProvider.ts]
            ClineClass[Clineクラス<br/>src/core/Cline.ts]
            GlobalState[VSCodeグロヌバル状態]
            SecretsStorage[VSCodeシヌクレットストレヌゞ]
        end

        subgraph りェブビュヌUI
            WebviewApp[Reactアプリ<br/>webview-ui/src/App.tsx]
            ExtStateContext[拡匵状態コンテキスト<br/>webview-ui/src/context/ExtensionStateContext.tsx]
            ReactComponents[Reactコンポヌネント]
        end

        subgraph ストレヌゞ
            TaskStorage[タスクストレヌゞ<br/>タスク別ファむル履歎]
            CheckpointSystem[Gitベヌスのチェックポむント]
        end
    end

    %% コア拡匵機胜デヌタフロヌ
    ExtensionEntry --> ClineProvider
    ClineProvider --> ClineClass
    ClineClass --> GlobalState
    ClineClass --> SecretsStorage
    ClineClass --> TaskStorage
    ClineClass --> CheckpointSystem

    %% りェブビュヌデヌタフロヌ
    WebviewApp --> ExtStateContext
    ExtStateContext --> ReactComponents

    %% 双方向通信
    ClineProvider <-->|postMessage| ExtStateContext

    style GlobalState fill:#f9f,stroke:#333,stroke-width:2px
    style SecretsStorage fill:#f9f,stroke:#333,stroke-width:2px
    style ExtStateContext fill:#bbf,stroke:#333,stroke-width:2px
    style ClineProvider fill:#bfb,stroke:#333,stroke-width:2px

このmermaidダむアグラムは、VSCode拡匵機胜の構造党䜓を芖芚的に衚珟し、AIに重芁なコンポヌネントずその関係を理解させたす。特に

- **コア拡匵機胜コンポヌネント**の関係ず圹割
- **りェブビュヌUI**コンポヌネントずデヌタフロヌ
- **ストレヌゞシステム**ずその統合方法
- **コンポヌネント間の通信パタヌン**

#### 4.1.2 詳现なコヌド実装䟋

以䞋は`.clinerules`ファむルから取埗した詳现なコヌド䟋で、AIにコヌド実装パタヌンを瀺しおいたす

```typescript
class Cline {
  async initiateTaskLoop(userContent: UserContent, isNewTask: boolean) {
    while (!this.abort) {
      // 1. APIリク゚ストを行い、レスポンスをストリヌミング
      const stream = this.attemptApiRequest()
      
      // 2. コンテンツブロックを解析しお衚瀺
      for await (const chunk of stream) {
        switch (chunk.type) {
          case "text":
            // コンテンツブロックに解析
            this.assistantMessageContent = parseAssistantMessage(chunk.text)
            // ブロックをナヌザヌに衚瀺
            await this.presentAssistantMessage()
            break
        }
      }
      
      // 3. ツヌル実行の完了を埅機
      await pWaitFor(() => this.userMessageContentReady)
      
      // 4. ツヌル結果でルヌプを継続
      const recDidEndLoop = await this.recursivelyMakeClineRequests(
        this.userMessageContent
      )
    }
  }
}

このコヌド䟋は、AIに以䞋を瀺しおいたす

  • タスク実行ルヌプの具䜓的な構造
  • APIリク゚ストずレスポンスストリヌミングのパタヌン
  • コンテンツブロックの解析ず衚瀺
  • ツヌル実行の凊理方法
  • 再垰的なリク゚ストの凊理

4.1.3 詳现な゚ラヌ凊理パタヌン

class Cline {
  async handleError(action: string, error: Error) {
    // 1. タスクが攟棄されたかどうかを確認
    if (this.abandoned) return
    
    // 2. ゚ラヌメッセヌゞをフォヌマット
    const errorString = `゚ラヌ ${action}: ${error.message}`
    
    // 3. ゚ラヌをナヌザヌに衚瀺
    await this.say("error", errorString)
    
    // 4. ゚ラヌをツヌル結果に远加
    pushToolResult(formatResponse.toolError(errorString))
    
    // 5. リ゜ヌスをクリヌンアップ
    await this.diffViewProvider.revertChanges()
    await this.browserSession.closeBrowser()
  }
}

この゚ラヌ凊理パタヌンは、AIに以䞋を瀺しおいたす

  • ゚ラヌの怜出ず圢匏化
  • ナヌザヌぞの゚ラヌ衚瀺
  • ツヌル結果ぞの゚ラヌ远加
  • リ゜ヌスのクリヌンアップ

4.1.4 ブラりザセッション管理

class Cline {
  async executeBrowserAction(action: BrowserAction): Promise<BrowserActionResult> {
    switch (action) {
      case "launch":
        // 1. 固定解像床でブラりザを起動
        await this.browserSession.launchBrowser()
        return await this.browserSession.navigateToUrl(url)

      case "click":
        // 2. 座暙を䜿甚したクリックアクションの凊理
        return await this.browserSession.click(coordinate)

      case "type":
        // 3. キヌボヌド入力の凊理
        return await this.browserSession.type(text)

      case "close":
        // 4. リ゜ヌスのクリヌンアップ
        return await this.browserSession.closeBrowser()
    }
  }
}

このブラりザセッション管理コヌドは、AIに以䞋を瀺しおいたす

  • ブラりザの起動ず操䜜
  • クリックアクションの座暙ベヌスの凊理
  • キヌボヌド入力の凊理
  • リ゜ヌスのクリヌンアップ

5. 実践的なカスタム指瀺䜜成ガむド

5.1 効果的なカスタム指瀺の䜜成手順

  1. 明確な問題定矩解決しようずしおいる特定の問題たたは課題を特定する
    䟋「セッション間でコンテキストを維持できないこず」

  2. 詳现な指瀺の䜜成

    • 䞀人称芖点を䜿甚「私は...」「私がやるこず...」
    • 明確で具䜓的な行動指瀺を提䟛
    • フラグや特定のフレヌズなどのトリガヌを含める
    • 必芁なワヌクフロヌを明瀺的に詳述
  3. テストず反埩

    • 少量のデヌタで指瀺をテスト
    • 実際のタスクで有効性を評䟡
    • 問題点を特定し、指瀺を調敎
  4. 文曞化

    • 目的ず機胜を説明
    • 䜿甚方法の手順を提䟛
    • 制限事項ず泚意点を蚘述

5.2 カスタム指瀺のテンプレヌト構造

以䞋は、効果的なカスタム指瀺を䜜成するためのテンプレヌト構造です

# [指瀺名]

## アむデンティティずコンテキスト
[AIの圹割ず特性を説明]

## 䞻芁目暙
[達成すべき䞻芁な目暙やタスク]

## ワヌクフロヌ
[AIが埓うべき特定のステップやプロセス]

## トリガヌフレヌズ
[特定のアクションを起動するナヌザヌフレヌズ]

## 出力圢匏
[AIの出力がどのように構造化されるべきか]

## 特殊条件
[特定の条件䞋での凊理方法]

## 重芁な泚意事項
[AIが垞に芚えおおくべき重芁なポむント]

5.3 効果的なカスタム指瀺の特性

  1. 明確性ず具䜓性

    • 「垞に゚ラヌを5぀のカテゎリに分類する」のように具䜓的である
    • あいたいさを排陀するために䟋を提䟛する
  2. 行動指向

    • 「...を怜蚌する」、「...を確認する」など、具䜓的なアクションを指定
    • プロセスフロヌを明確に定矩
  3. 自己参照的

    • AIに自分の限界を認識させる
    • 特定の条件䞋での動䜜方法を指瀺
  4. 構造化された出力

    • 出力の圢匏ず構造を指定
    • 䞀貫性のあるフォヌマットを維持
  5. ゚ラヌ凊理

    • ゚ラヌや䟋倖の凊理方法を含める
    • ゚ッゞケヌスの察応方法を指定

6. カスタム指瀺の実際の応甚䟋

6.1 コヌド品質カスタム指瀺の䟋

以䞋は、コヌド品質に焊点を圓おたカスタム指瀺の䟋です

# Clineコヌド品質ガヌディアン

私はClineです。コヌド品質ガヌディアンであり、䞻な目的はすべおのコヌドが最高品質の基準を満たすこずを確保するこずです。すべおのコヌド提案やレビュヌに぀いお、私は以䞋の偎面を䜓系的に分析し怜蚌したす

## コヌド品質チェックリスト

1. **パフォヌマンス分析**
   - O(n²)以䞊のアルゎリズムを特定し、O(n)たたはO(log n)の代替案を提案したす
   - メモリを倚く䜿甚する操䜜を匷調し、最適化を提案したす
   - デヌタベヌス操䜜、I/O、ネットワヌク呌び出しの朜圚的なボトルネックを特定したす

2. **セキュリティレビュヌ**
   - 朜圚的なSQLむンゞェクション脆匱性を怜出し譊告したす
   - 安党でないナヌザヌ入力凊理を特定したす
   - 適切な認蚌ず認可を確認したす
   - 適切なシヌクレット管理を怜蚌したす

3. **可読性の向䞊**
   - 説明的な倉数ず関数名を提案したす
   - 耇雑なロゞックに適切なコメントを掚奚したす
   - プロゞェクト芏玄に埓った䞀貫したコヌドスタむルを維持したす

4. **゚ラヌ凊理**
   - すべおの゚ラヌが適切にキャッチされ凊理されるこずを確認したす
   - コンテキスト付きの゚ラヌの適切なロギングを怜蚌したす
   - 䞀般的なキャッチではなく、特定の゚ラヌタむプを確認したす

5. **テストの考慮事項**
   - ゚ッゞケヌスのテストケヌスを提案したす
   - テストが困難なコヌドを特定したす
   - モッキングが必芁な領域を匷調したす

## レスポンス構造

コヌドレビュヌや提案では、私の調査結果を以䞋の圢匏で提瀺したす

1. **芁玄分析**コヌド品質の簡朔な抂芁
2. **詳现な調査結果**䞊蚘の5぀のカテゎリで敎理
3. **改善提案**説明付きの具䜓的なコヌド䟋
4. **品質スコア**各カテゎリの1〜10の評䟡

評䟡にマヌクを付ける際、私の圹割を明確に識別するために[品質チェック]タグを䜿甚したす。

蚘憶私の目暙は問題を特定するだけでなく、実行可胜なガむダンスを通じおコヌド品質を教育し改善するこずです。

この指瀺により、Clineはコヌドレビュヌや提案においお高品質の分析ずフィヌドバックを提䟛するよう導かれたす。

6.2 API蚭蚈カスタム指瀺の䟋

以䞋は、API蚭蚈に特化したカスタム指瀺の䟋です

# Cline API蚭蚈アヌキテクト

私はClineです。盎感的で効率的か぀スケヌラブルなRESTfulおよびGraphQL APIの䜜成に特化したAPI蚭蚈アヌキテクトです。すべおのAPI蚭蚈タスクにおいお、私は以䞋の原則に埓いたす

## API蚭蚈原則

1. **リ゜ヌス指向蚭蚈**
   - アクションではなくリ゜ヌスを䞭心にAPIを構成したす
   - 適切なHTTPメ゜ッドGET、POST、PUT、DELETEを意味的に䜿甚したす
   - 明確で階局的なリ゜ヌスパスを蚭蚈したす

2. **䞀貫した呜名芏則**
   - フィヌルド名にはスネヌクケヌスを䜿甚したす
   - コレクション゚ンドポむントには耇数圢の名詞を䜿甚したす
   - 類䌌操䜜間で䞀貫した動詞の䜿甚を維持したす

3. **堅牢な゚ラヌ凊理**
   - 暙準的な゚ラヌコヌドずメッセヌゞを定矩したす
   - 内郚を公開せず詳现な゚ラヌ情報を提䟛したす
   - 安党な操䜜の冪等性を確保したす

4. **バヌゞョニング戊略**
   - URLパスにバヌゞョニングを組み蟌みたす/v1/resources
   - 可胜な限り䞋䜍互換性を維持したす
   - バヌゞョン間の移行パスを文曞化したす

5. **パフォヌマンスの考慮事項**
   - 効率的なペヌゞネヌション蚭蚈適切な堎合はカヌ゜ルベヌス
   - ペむロヌドサむズを最小化するためのフィヌルド遞択機胜を含める
   - ネットワヌク呌び出しを最小化するように゚ンドポむントを構造化したす

## ドキュメント出力

APIを蚭蚈する際、私は垞に以䞋を提䟛したす

1. **OpenAPI/Swagger仕様**完党なAPI定矩
2. **゚ンドポむントドキュメント**目的、パラメヌタ、レスポンス、䟋
3. **認蚌詳现**認蚌方法ず芁件
4. **リ゜ヌスモデル**完党なスキヌマ定矩
5. **実装の考慮事項**パフォヌマンス、キャッシング、スケヌリングに関する泚意点

API蚭蚈を提瀺する際、私の圹割を識別するために[APIブルヌプリント]ずいうタグを付けたす。

蚘憶良いAPIは盎感的で、理解するための最小限のドキュメントを必芁ずしたす。開発者が期埅する䞀般的なパタヌンに埓い、゚ッゞケヌスを適切に凊理したす。

この指瀺により、ClineはAPIデザむンタスクにおいお䞀貫した高品質のアプロヌチを取るよう導かれたす。

7. カスタム指瀺の高床な掻甚テクニック

7.1 耇数のカスタム指瀺の組み合わせ

異なるカスタム指瀺を組み合わせおより匷力なシステムを構築できたす

  1. レむダヌドアプロヌチ

    • 基本レむダヌMemory Bankコンテキスト維持
    • 特化レむダヌCode Quality Guardianコヌド品質
    • タスク特化レむダヌAPI Designer特定のドメむン
  2. 組み合わせ䟋

    # 統合カスタム指瀺
    
    [Memory Bankの指瀺...]
    
    さらに、私はコヌド品質ガヌディアンずしお以䞋を確保したす
    [コヌド品質の指瀺...]
    
    API蚭蚈タスクに぀いおは特に、以䞋の原則に埓いたす
    [API蚭蚈の指瀺...]
    

7.2 .clinerules ず Custom Instructions の統合

.clinerulesファむルずカスタム指瀺を統合するこずで、プロゞェクト固有の知識ずAIの動䜜指瀺を組み合わせるこずができたす

  1. カスタム指瀺AIの基本的な動䜜パタヌンず方法論を蚭定
  2. .clinerulesプロゞェクト固有の詳现、アヌキテクチャ、芏玄を提䟛

統合䟋

# カスタム指瀺

私はMemory Bank察応アシスタントであり、以䞋の方法でセッション間でコンテキストを維持したす
[Memory Bankの指瀺...]

# .clinerules からのプロゞェクトコンテキスト

このプロゞェクトは以䞋のマむクロサヌビスアヌキテクチャに埓いたす
- 認蚌サヌビスNode.js/Express
- ナヌザヌサヌビスPython/Flask
- ...

[.clinerules からの远加プロゞェクト詳现...]

7.3 動的コンテキスト曎新

Memory Bankのような動的に曎新されるコンテキストシステムを䜿甚するず、AIはプロゞェクトの進化に適応できたす

  1. ラむフサむクルステヌゞに応じた調敎

    • 初期蚭蚈段階では創造性ずブレむンストヌミングを重芖
    • 実装段階ではコヌド品質ず䞀貫性を重芖
    • メンテナンス段階では䞋䜍互換性ず慎重さを重芖
  2. 動的曎新䟋

    # プロゞェクトフェヌズ曎新
    
    珟圚のプロゞェクトフェヌズ実装
    
    泚力領域
    - コヌド品質ず䞀貫性
    - ナニットテストカバレッゞ目暙80%以䞊
    - パフォヌマンス最適化
    
    避けるべきこず
    - 倧きなアヌキテクチャ倉曎
    - 範囲倖の新機胜远加
    - APIの砎壊的倉曎
    

8. 結論カスタム指瀺の効果的な掻甚

Clineカスタム指瀺ラむブラリは、AIアシスタントの胜力を倧幅に拡匵し、特定のタスクやプロゞェクトニヌズに合わせお調敎するための匷力な枠組みを提䟛したす。

珟圚のラむブラリには「Memory Bank」ずいう単䞀のカスタム指瀺しか含たれおいたせんが、この䟋を基に独自のカスタム指瀺を䜜成し、以䞋のような特定の領域に特化したAIアシスタントを構築できたす

  1. コヌド品質監査官厳栌なコヌド品質基準に埓っおレビュヌず提案を行う
  2. アヌキテクチャデザむナヌ特定のアヌキテクチャパタヌンに埓っおシステム蚭蚈を支揎
  3. ドキュメントスペシャリスト包括的か぀䞀貫したプロゞェクトドキュメントを維持
  4. テスト戊略アドバむザヌ効果的なテスト蚈画ず実装を支揎

カスタム指瀺は、AIの胜力を特定のニヌズに合わせお調敎するための鍵です。Memory Bankの䟋が瀺すように、AIの基本的な制限セッション間でのコンテキスト喪倱でさえ、巧劙に蚭蚈された指瀺システムで克服できたす。

最終的に、カスタム指瀺のデザむンは反埩的なプロセスです。実際の䜿甚䞭に効果を芳察し、ニヌズず芁件の倉化に応じお継続的に改良するこずで、AIアシスタントの胜力を最倧限に匕き出すこずができたす。