sessions について
VS Code の `src/vs/sessions/**` を対象に、実装、レビュー、設計を行うための開発スキルです。モジュール境界を定め、関連仕様の参照先と、変更に応じた検証方法を示します。
主な機能
- 01Sessions のレイヤー境界を維持
- 02共有コードをプロバイダー非依存に維持
- 03observable によるセッション状態のモデル化
- 04サブシステム別の仕様参照
- 05変更に応じた検証の実施
活用シーン
- 01Sessions 機能の実装
- 02プロバイダールーティング変更のレビュー
- 03セッション対応レイアウトの調整
- 04モジュール間の依存関係チェック
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ microsoft/ vscode --skill sessionsインストール後、Claude Code で/sessionsを入力して読み込まれたか確認します。
詳細
Agents Window の開発
src/vs/sessions/** 以下の実装、レビュー、設計作業では、このスキルを使用してください。
1. 基本原則を適用する
- レイヤーの依存方向を維持してください。
vs/sessionsはvs/workbenchおよび下位レイヤーをインポートできますが、vs/workbenchからvs/sessionsをインポートしてはいけません。 - Sessions の共有コードはプロバイダーに依存しないようにしてください。プロバイダーに依存しないコントリビューションから、プロバイダーの実装をインポートしてはいけません。
- 可変なセッションとチャットの状態はオブザーバブルでモデル化してください。イベントは通知に使用し、並行する状態モデルや制御フローには使用しないでください。
- Sessions のメニュー ID は
browser/menus.tsに登録し、Menus.*を使用してください。 - コントリビューションは、適切な
sessions.*.main.tsエントリーポイントからインポートしてください。 - 機能が真に共有されるものでない限り、共有ワークベンチを変更するより、Sessions 側で適応させてください。
- 安定したアーキテクチャは担当する仕様に、具体的な動作はテストに記載してください。実装の経緯を開発ガイドとして残さないでください。
2. 担当領域を特定する
まず src/vs/sessions/README.md を確認し、変更に関連する仕様のみを読んでください。
| 領域 | 仕様 |
|---|---|
| レイヤー構成、フォルダーの所有権、モジュール間のインポート | src/vs/sessions/LAYERS.md |
| セッション/チャットのモデル、サービス、プロバイダーの契約、コアデータフロー | src/vs/sessions/SESSIONS.md |
| オートメーションの所有権、ルーティング、移行、永続化、実行ライフサイクル | src/vs/sessions/AUTOMATIONS.md |
| ワークベンチのパーツ、グリッド、タイトルバー、エディター表示 | src/vs/sessions/LAYOUT.md |
| セッション対応のレイアウト状態と復元 | src/vs/sessions/LAYOUT_CONTROLLER.md |
| シングルペインの動作と想定される構成 | src/vs/sessions/SINGLE_PANE_SCENARIOS.md |
| Sessions サイドバーのリスト、グループ化、フィルタリング、永続化 | src/vs/sessions/SESSIONS_LIST.md |
| スマートフォンのレイアウトとモバイルコンポーネント | src/vs/sessions/MOBILE.md |
| AI のカスタマイズ | src/vs/sessions/AI_CUSTOMIZATIONS.md |
| Copilot のカスタマイズ | src/vs/sessions/copilot-customizations-spec.md |
| Copilot Chat プロバイダー | src/vs/sessions/contrib/providers/copilotChatSessions/COPILOT_CHAT_SESSIONS_PROVIDER.md |
| Agent Host プロバイダー | src/vs/sessions/contrib/providers/agentHost/AGENT_HOST_SESSIONS_PROVIDER.md |
| Remote Agent Host プロバイダー | src/vs/sessions/contrib/providers/remoteAgentHost/REMOTE_AGENT_HOST_SESSIONS_PROVIDER.md |
学習用インボックスは、デフォルトでは読み込まないでください。見出しと対象範囲を検索し、権威ある仕様を確認してから、該当する項目のみを読んでください。
3. 変更前に調査する
- 現在の実装と既存のテストをたどってください。
- 新しいものを追加する前に、共有ヘルパー、コンテキストキー、メニュー ID、エントリーポイントのインポート、プロバイダーの抽象化を検索してください。
- どのレイヤーがその動作を担うのかを確認してください。プロバイダー固有の判断はプロバイダーに、ビュー/レイアウトの判断は Sessions が所有するブラウザーコードに配置してください。
- UI の作業では、該当するアクセシビリティ、デザイン、CSS、レイアウト、テーマのスキルも使用してください。
- エージェント、LLM、ポリシー、権限、テレメトリ、管理対象設定の変更では、実装前に該当する専門スキルを使用してください。
4. 契約を実装する
基本原則と対象を絞った仕様を適用してください。以下の境界を維持できる、小規模な変更を優先してください。
ISessionsManagementServiceはモデルのオーケストレーションとプロバイダーのルーティングを担います。ISessionsServiceは表示中のセッションとアクティブなセッションの動作を担います。- プロバイダーは
ISessionとIChatを通じて、プロバイダーに依存しない状態を公開します。 - セッションの状態はオブザーバブルにし、コンシューマーは UI の状態をリアクティブに導出します。
- コントリビューションは、適切な
sessions.*.main.tsエントリーポイントを通じて読み込みます。 - Sessions のメニューでは、共有の
Menusレジストリを使用します。 - 共有ワークベンチの変更は、Sessions 固有のポリシーではなく、共有機能を表すものにしてください。
仕様変更のゲート
既存の契約を復元するバグ修正では、仕様を更新しません。正式な仕様を編集する前に、次の3点をすべて特定してください。
- 意図的に変更する既存の所有権、インターフェース、ライフサイクル、状態機械、永続化、またはコンポーネント間の契約。
- その契約変更の影響を受ける実装箇所。
- 回帰テストと簡潔なコードコメントだけでは、その内容を十分に表現できない理由。
いずれかの回答が欠けている場合は、仕様を変更しないでください。具体的な動作は対象を絞ったテストに記述し、わかりにくい実装上の制約は担当コードの近くに記載し、調査の経緯はイシューまたはプルリクエストに残してください。
仕様を更新するのは、コンポーネントの所有権、インターフェースまたはライフサイクルの契約、状態機械、永続化、コンポーネント間の不変条件が変更される場合に限ります。スタイル、文言、アクションの配置、テレメトリフィールド、設定のデフォルト値、実装アルゴリズム、個別のバグ修正では仕様を更新しないでください。これらの詳細はコードと対象を絞ったテストで管理します。
5. 変更に応じた検証
変更をカバーする、既存のチェックのうち最小限のものを実行してください。
- 影響を受ける動作を対象とした単体テスト。
- インポートまたはモジュールの所有権を変更した場合は、
npm run valid-layers-check。 - TypeScript の変更に応じて必要な、対象を絞った型チェックまたはコンパイル。
- プロセス間または UI に関わる作業に関連する、統合テスト、E2E テスト、またはビジュアル検証。
ドキュメントのみの変更では、フルビルドではなく、リンク、パス、一貫性のチェックが必要です。
6. フィードバックを適切に記録する
ユーザーが明示的にアプローチを訂正または却下した場合、リテラルの learn! トリガーが使われていない限り、feedback-learning スキルを呼び出してください。リテラルの learn! によるリクエストには、代わりに .github/instructions/learnings.instructions.md に従ってください。長期的に維持すべきアーキテクチャ上の不変条件は担当する仕様に、具体的な動作は回帰テストに、汎用性がまだ確認されていないガイダンスは一時的に対象を絞った学習用インボックスに記録してください。すべての訂正をこのスキルに追加してはなりません。
7. このスキルを維持する
このスキルは、Agents Window の作業の大半に役立つ、安定した横断的な原則を追加するとき、またはルーティングやワークフロー自体が変わるときにのみ更新してください。サブシステムの契約は対象を絞った仕様に、バグの動作はテストに記載してください。
コア原則のセクションは箇条書き10項目以内にしてください。項目を追加する前に、重複を統合し、古くなったガイダンスを削除し、既存の原則を書き換えることを優先してください。インシデント固有の詳細を追加したり、このスキルを学習ログとして使ったりしてはなりません。