branchContext.json•4.46 kB
{
  "schema": "memory_document_v2",
  "metadata": {
    "id": "feature-template-ts-context",
    "title": "Branch Context for feature/template-ts",
    "documentType": "branch_context",
    "path": "branchContext.json",
    "tags": [],
    "createdAt": "2025-04-11T11:46:58.120Z",
    "lastModified": "2025-04-11T11:56:06.794Z"
  },
  "content": {
    "description": "テンプレートをJSONからTypeScriptへ移行するためのブランチ",
    "purpose": "現在JSONファイルとして管理されているテンプレートをTypeScriptコードに移行し、型安全性の向上、CI環境でのパス解決問題の解消、テスト環境の簡素化を実現する。",
    "user_stories": {
      "problem": "現状のJSONテンプレート実装には以下の問題がある:\n1. JSONファイルのパス解決が環境によって異なり、CI環境でテストが失敗する\n2. テンプレートの型安全性が保証されない\n3. テスト環境でのモック/スタブの作成が複雑",
      "features_needed": "1. テンプレート定義をTypeScriptオブジェクトとして実装\n2. 既存の`JsonTemplateLoader`を拡張してTypeScript定義からの読み込みをサポート\n3. テスト環境でモックテンプレートを簡単に使用できる仕組み\n4. 既存のJSONファイルとの後方互換性維持",
      "expected_behavior": "1. テンプレートがTypeScriptモジュールとして定義され、IDEのコード補完やエラーチェックが機能する\n2. CI環境を含むすべての環境で一貫したパス解決が行われる\n3. テスト環境でモックテンプレートが簡単に使用できる\n4. 既存のコードとの互換性が維持される"
    },
    "related_issues": {
      "description": "CI環境でのテストが失敗する問題は、テンプレートのパス解決が環境に依存しているため。また、テンプレートの構造変更時に型チェックが機能しないため、ランタイムエラーが発生しやすい。",
      "references": "JsonTemplateLoader.tsのgetJsonTemplatesDirectory()メソッドでは複数のパス候補をハードコードしており、環境によって動作が変わる可能性がある。"
    },
    "technical_considerations": {
      "design_decisions": [
        {
          "id": "template-ts-structure",
          "description": "テンプレート定義用のディレクトリ構造と命名規則",
          "details": "- `/packages/mcp/src/templates/definitions/` ディレクトリを新設\n- 各テンプレートファイルは `[templateId].ts` 形式で作成(例:rules.ts)\n- テンプレート変数は `[templateId]Template` 形式で命名(例:rulesTemplate)\n- インデックスファイル(index.ts)ですべての定義をエクスポート"
        },
        {
          "id": "loader-extension",
          "description": "JsonTemplateLoader の拡張方法",
          "details": "- テンプレートIDから変数名への変換メソッドを追加\n- まずメモリ内のTS定義をチェックし、見つからなければ従来のJSONファイル読み込みを実行\n- 型定義をTemplate型に統一\n- ロギングを強化してどこからテンプレートを読み込んだかを明示"
        },
        {
          "id": "migration-strategy",
          "description": "移行戦略",
          "details": "- まずコアテンプレート(rules, active-context, branch-context, system-patterns, progress)を移行\n- TypeScript定義を優先しつつ、JSONファイルも残して段階的に移行\n- 全テンプレートの移行完了後に別PRでJSONファイルの削除を検討"
        }
      ],
      "constraints": [
        "既存コードとの後方互換性を維持すること",
        "テスト環境でも正常に動作すること",
        "CI環境での動作を保証すること",
        "型安全性を最大限に活用すること"
      ],
      "dependencies": [
        "Template インターフェース(/packages/mcp/src/templates/types.ts)",
        "JsonTemplateLoader(/packages/mcp/src/infrastructure/templates/JsonTemplateLoader.ts)",
        "ITemplateLoader(/packages/mcp/src/infrastructure/templates/interfaces/ITemplateLoader.ts)",
        "TemplateRenderer(/packages/mcp/src/infrastructure/templates/TeplateRenderer.ts)"
      ]
    }
  }
}