[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6MDRFTMY313JBWCESZD87EJ":3,"skill-same:01M6MDRFTMY313JBWCESZD87EJ":116},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":14,"categories":15,"keywords":16,"publishedAt":18,"linkOnly":19,"markdownContent":20,"markdownBody":21,"frontMatter":22,"refName":23,"commitSha":24,"skillDirectory":25,"forksCount":26,"repositoryHtmlUrl":27,"repositoryHomepageUrl":6,"ownerHtmlUrl":28,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":29,"install":30,"resources":43},"01M6MDRFTMY313JBWCESZD87EJ","xddp-11-specs",null,"tsuna44\u002FXddpSettings","tsuna44","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F84987382?v=4","01M6JWX5PY45PD3W2131F7VMF4","01M6JWX5VFK80TQBJJY8SHAE4N",1,"MIT","https:\u002F\u002Fgithub.com\u002Ftsuna44\u002FXddpSettings\u002Fblob\u002Fmain\u002FClaudeCode\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002FSKILL.md",[],[17],"xddp 11 specs","2026-11-10 10:12:30",false,"---\nname: xddp-11-specs\ndescription: XDDP フェーズ6: 最新仕様書（{XDDP_DIR}\u002Flatest-specs\u002F）を生成・更新してCRを完了する。「最新仕様書を作って」「latest-specsを更新して」「CRを完了して」などで起動する。\nargument-hint: \"[CR番号]\"\n---\n\nYou are orchestrating **XDDP Step 11 (process step 11) — Generate\u002FUpdate Latest Specifications**.\n\n> This step synthesises SPO (current state) + CHD (changes) into latest-specs\u002F (current truth).\n> New structure follows Kruchten 4+1 view model: Use Case \u002F Logical \u002F Development \u002F Process \u002F Physical.\n\n**Arguments:** $ARGUMENTS = [CR_NUMBER] (optional)\n\n---\n\nRead `~\u002F.claude\u002Fskills\u002Fxddp-common\u002FSKILL.md`, apply \"## CR Resolution\" with $ARGUMENTS → let `CR`, `REST_ARGS`.\nLet `TODAY` = today's date.\n\n(xddp.config.md lookup done in xddp-common\u002FSKILL.md「## CR Resolution」; reuse WORKSPACE_ROOT, XDDP_DIR,\nDOCS_DIR, DOCS, REPOS_MAP, REPOS_KEYS, IS_MULTI.)\n\n---\n\n## Step 0: Pre-flight（事前準備）\n\n1. Let `CR_PATH` = `{WORKSPACE_ROOT}\u002F{XDDP_DIR}\u002F{CR}`.\n\n2. Read `~\u002F.claude\u002Fskills\u002Fxddp-common\u002FSKILL.md`, apply \"## Resolve HAS_CROSS\" with:\n     IS_MULTI: {IS_MULTI}, ARTIFACT_PATH: {CR_PATH}\u002F04_specout\u002Fcross\u002FSPO-{CR}-cross.md\n   → let `HAS_CROSS`.\n   ※ HAS_CROSS 判定は SPO 存在ベース（旧 CHD 存在ベースから変更）。specout まで実施していれば cross\u002F ビューを生成する方針。\n   （他工程が「直前工程の cross 成果物」を見るのに対し、本工程は最新仕様書生成の起点となる\n   specout の cross SPO を基準にする。design\u002Fcode が未完了でも specout 済みなら cross ビューを\n   生成したいため、あえて直前工程＝design の DSN ではなく specout の SPO を見る）\n\n3. **AFFECTED_REPOS の確定（Step 0 で完全確定）:**\n   Read `~\u002F.claude\u002Fskills\u002Fxddp-common\u002FSKILL.md`, apply \"## Resolve Affected Repos\" with:\n     REPOS_KEYS: {REPOS_KEYS}, IS_MULTI: {IS_MULTI}, CR_PATH: {CR_PATH}, FILTER_BY_SPO: true,\n     HAS_CROSS: {HAS_CROSS}, CR: {CR}\n   → let `AFFECTED_REPOS`.\n\n4. **分割実行継続マーカーの確認:**\n   `{CR_PATH}\u002Fprogress.md` を Read し、「## 工程11 分割実行メモ」セクションが存在するかを確認する。\n   存在する場合:\n   - `完了済みステップ:` に含まれるステップ（UC・OV・CROSS 等）はスキップする\n   - `未処理リポジトリ:` が存在する場合は AFFECTED_REPOS をその値に限定する（選択肢 A の継続）\n   - `処理済みモジュール:` が存在する場合は当該 repo の MODULE_SCOPE をその値に限定する（選択肢 B の継続）\n   - `処理済みUR:` フィールドが存在する場合は UC をスキップせず `未処理UR:` リストのみを対象に Step UC を再実行する\n   存在しない場合は通常の全処理モードで実行する。\n\n5. Read `~\u002F.claude\u002Fskills\u002Fxddp-common\u002FSKILL.md`, apply \"## Progress Update\" with:\n     CR_PATH: {CR_PATH}, STEP_NUM: 11, STATE: ? 進行中, DETAIL_STEP: `Step 0: 事前準備中`\n\nRead `~\u002F.claude\u002Fskills\u002Fxddp-common\u002Fprocedures\u002Fsnapshot-phase-baseline.md`, apply \"## Snapshot Phase Baseline\" with:\n  CR_PATH: {CR_PATH}, STEP_NUM: 11\n\n---\n\n## Step UC: Synthesize Use Cases (system\u002Fuse-cases\u002F)\n\n**スキップ条件（以下のいずれかに該当する場合はこのステップをスキップ）:**\n- 分割実行継続マーカーの `完了済みステップ:` に `UC` が含まれる（かつ `処理済みUR:` フィールドが存在しない）\n- CRS に UR（ユーザー要求）が存在しない（技術的変更のみ）\n\nRead `~\u002F.claude\u002Fskills\u002Fxddp-common\u002FSKILL.md`, apply \"## Progress Update\" with:\n  CR_PATH: {CR_PATH}, STEP_NUM: 11, STATE: ? 進行中, DETAIL_STEP: `Step UC: ユースケース合成中`\n\nRead `{CR_PATH}\u002F03_change-requirements\u002FCRS-{CR}.md` → CRS §2 UR list. Let `UR_COUNT` = UR 総数。\n\n**コンテキスト圧迫チェック（Step UC 開始前・オーケストレーター側で実施）:**\n`UR_COUNT` が 20 を超える場合（かつ分割実行継続マーカーがない場合）は、以下を提示して指示を求める:\n- **A: UR 単位で分割実行（推奨）** — 今回は指定 UR のみ処理し、残りは次回実行で処理する\n- **B: 一括実行** — 全 UR を一括処理する（コンテキスト圧迫のリスクあり）\n選択結果に応じて処理対象 UR リストを確定する（`RESUME_UR_LIST` に反映）。\n\n**Agent tool** `subagent_type=xddp-specs-uc-agent`:\n```\nCR_NUMBER: {CR}\nCR_PATH: {CR_PATH}\nXDDP_DIR: {XDDP_DIR}\nDOCS: {DOCS}\nAFFECTED_REPOS: {AFFECTED_REPOS}\nHAS_CROSS: {HAS_CROSS}\nTODAY: {TODAY}\nRESUME_UR_LIST: {上記チェックで確定した処理対象 UR リスト、分割実行継続マーカーの 未処理UR: リスト、または空（=全UR）}\nOUTPUT_FILE: {CR_PATH}\u002Fpending-items\u002FPENDING-UC-{CR}.md\n```\n\nWait for completion. エージェントは廃止候補・命名衝突・related-modules 照合不能等の人判断が必要な項目を\n内部で対話せず OUTPUT_FILE に**保留事項リストとして書き込む**（既存エージェントの確立されたファイル経由ハンドオフパターンに倣う。\n`xddp-verifier-agent.md` の `OUTPUT_FILE` 契約と `xddp-08-verify\u002FSKILL.md` の Read-back 処理と同じ方式）。\nオーケストレーターは Agent tool 完了後に `{CR_PATH}\u002Fpending-items\u002FPENDING-UC-{CR}.md` を\nRead し、内容を Let `UC_PENDING` に保持する。保留事項は Step GATE で人に提示する。\n廃止候補の削除実行は Step GATE 後にオーケストレーター側がファイル操作として直接行う（エージェントを再呼び出ししない）。\n\n---\n\n## Step OV: Generate\u002FUpdate overview (per repo)\n\n**スキップ条件:** 分割実行継続マーカーの `完了済みステップ:` に `OV` が含まれる場合はスキップ。\n\nRead `~\u002F.claude\u002Fskills\u002Fxddp-common\u002FSKILL.md`, apply \"## Progress Update\" with:\n  CR_PATH: {CR_PATH}, STEP_NUM: 11, STATE: ? 進行中, DETAIL_STEP: `Step OV: overview 生成中`\n\nFor each `{repo}` in `AFFECTED_REPOS`:\n\nRead `{CR_PATH}\u002F04_specout\u002F{repo}\u002FSPO-{CR}.md`.\nGet `SPECOUT_MODULES` = `{CR_PATH}\u002F04_specout\u002F{repo}\u002Fmodules\u002F` 配下のディレクトリ名リスト（機械的取得）。\n\n**`overview\u002Farchitecture.md` の生成\u002F更新（マージ方式）:**\nSPO サマリーの「全体アーキテクチャ図」セクション（`## 2.` または「モジュール依存・コンポーネント構成」と表記されるセクション）の内容を使用する。\n既存 `{XDDP_DIR}\u002Flatest-specs\u002F{repo}\u002Foverview\u002Farchitecture.md` が存在する場合:\n- **機械的先決基準（更新判断）:** SPO の Mermaid ブロックのノード数\u002Fエッジ数が既存ファイルと異なる、\n  またはテキストセクションの行数が 20% 以上変化している → 即時「更新あり」と判定\n- 機械的基準に該当しない場合のみ AI セマンティック比較を実施\n- 更新時の方針:\n  - SPECOUT_MODULES に含まれるモジュールの情報は最新 SPO の内容で更新する\n  - SPECOUT_MODULES に含まれない（今回 specout 未実施）モジュールの情報は保持する\n  - 削除されたモジュール（CHD に削除記述がある場合）は architecture.md から削除する\n  ※ 判定は SPECOUT_MODULES（ディレクトリ名リスト）との機械的照合。AI のセマンティック判断に依存しない。\n- **モジュール名ドリフト検出（ノンブロッキング）:**\n  SPECOUT_MODULES に新規名があり既存エントリに類似名がある場合（例: 新規 `authentication` と既存 `auth`）は\n  「リネーム候補: `auth` → `authentication`」として気づきメモに記録し人に確認を求める（処理は継続）。\n- **⚠️ サイレント廃止リスク（実装コメント）:**\n  CHD に削除記述がなく今回 specout 対象外のモジュールは廃止候補として検出できない。\n  複数 CR にわたる knowledge base の陳腐化を防ぐため、定期的な「棚卸し CR」（全モジュール specout の実施）を推奨する。\n  この制約は data-model.md \u002F crud.md にも同様に適用される。\n- **⚠️ 並行 CR による同時更新リスク（実装コメント）:**\n  architecture.md \u002F data-model.md \u002F crud.md は複数 CR が同一リポジトリを対象とする場合に同時更新リスクがある共有ファイルである。\n  同一リポジトリに並行 CR が存在する場合は xddp-11-specs を逐次実行することを推奨する。\n  将来的なロック機構は improvement-backlog に記録する（今回スコープ外）。\n存在しない場合: `~\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_overview-architecture-template.md` から初期生成する。\n\n**バージョニング（architecture.md）:**\n| 条件 | バージョン |\n|---|---|\n| 新規モジュールのエントリを追加 | MINOR |\n| 既存モジュール説明・依存関係を更新（内容変更あり） | PATCH |\nSPO なし CHD あり の PATCH 更新では `last-verified-cr:` を更新しない。\n\n**`overview\u002Fsequences\u002F{feature}-seq.md` の生成\u002F更新:**\nSPO サマリーの「モジュール間シーケンス図」セクションのサブセクション見出しをケバブ変換して使用する。\n見出しなし・単一の場合は `main-seq.md` をデフォルトとする。\nテンプレート: `~\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_overview-sequence-template.md`\n\n**廃止シーケンスファイル処理（Step OV）:**\n`{XDDP_DIR}\u002Flatest-specs\u002F{repo}\u002Foverview\u002Fsequences\u002F` 内の既存 `{feature}-seq.md` を列挙し、\n今回の SPO §3 サブセクション見出し（ケバブ変換後）に対応しないファイルを「廃止候補」として検出する。\n並行 CR 保護: フロントマター `last-updated-cr:` が現在の CR と異なる場合、`{XDDP_DIR}\u002F{last-updated-cr}\u002Fprogress.md` を確認する。\n  - ファイルが存在し、かつ「## CR クローズ」セクションを含まない（クローズ未完了）→ 当該他 CR が進行中とみなし\n    廃止候補から除外する（「他 CR（{last-updated-cr}）進行中 — スキップ」として提示）。\n  - ファイルが存在しない、または「## CR クローズ」セクションを含む（クローズ済み）→ 保護対象外とし、\n    通常どおり廃止候補として検出する。\n廃止候補が存在する場合はユーザーに提示して削除確認を求める。\nSPO 見出し名変更（内容が同一だが名称が変わった場合）も廃止候補として検出される。\nコンテンツの意味的同一性が高い場合はコピー（旧名→新名）を提案する。\n\n**`overview\u002Fdfd.md` の生成\u002F更新:**\nSPO サマリーの「データフロー図（DFD）」（`## 4.2` または見出し名一致）セクションを参照する。\n「副作用なし（省略）」または「対象外」の場合はスキップする。\nテンプレート: `~\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_overview-dfd-template.md`\n\n**`overview\u002Fdata-model.md` の生成\u002F更新（マージ方式）:**\nSPO サマリーの「データモデル（エンティティ関連図・データ構造定義）」セクション（`## 4.3` または見出し名一致）を参照する。\n「対象外」記載またはセクションが存在しない場合は生成スキップ（既存ファイルがあれば保持）。\n既存ファイルが存在する場合は architecture.md と同様のマージ方式で更新する。\n**エンティティ名正規化ルール:**\n- 既存 `data-model.md` に同名候補がある場合: 既存名称を正規名として採用する\n- 既存 `data-model.md` に類似名がある場合（例: `User` vs `UserEntity`）:\n  AI がセマンティック類似度で同一対象と判断できる場合は既存名を優先する\n  判断困難な場合は「`UserEntity`（既存: `User`）統合候補」として気づきメモに記録しノンブロッキングで継続する\n- 初回生成の場合: SPO の表記をそのまま採用する\nテンプレート: `~\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_overview-data-model-template.md`\n`source:` フロントマターキー: SPO §4.3 の `source` アノテーション（`ai-inferred` または `spo`）を引き継ぐ。\n\n**`overview\u002Fcrud.md` の生成\u002F更新（マージ方式）:**\nSPO サマリーの「データアクセスマトリクス（CRUDマトリクス・Read\u002FWriteマトリクス）」セクション（`## 4.4` または見出し名一致）を参照する。\n「対象外」記載またはセクションが存在しない場合は生成スキップ（既存ファイルがあれば保持）。\nマージ方式: 処理名（行）をキーに照合し、今回の SPO §4.4 に記述されているものは更新、非記載は保持。\nテンプレート: `~\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_overview-crud-template.md`\n\n**`overview\u002Fdeployment.md` の生成\u002F更新:**\nSPO サマリーに「ハードウェア構成・デプロイ構成」セクションが存在する場合のみ生成する。\nテンプレート: `~\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_overview-deployment-template.md`\n\n※ セクション参照は見出し名ベースで行う（セクション番号は SPO テンプレート種別により異なるため）。\n\n---\n\n## Step MOD: Generate\u002FUpdate module specs (per repo, per module)\n\n**スキップ条件:** 分割実行継続マーカーの `完了済みステップ:` に `MOD` が含まれる場合はスキップ。\n\nRead `~\u002F.claude\u002Fskills\u002Fxddp-common\u002FSKILL.md`, apply \"## Progress Update\" with:\n  CR_PATH: {CR_PATH}, STEP_NUM: 11, STATE: ? 進行中, DETAIL_STEP: `Step MOD: モジュール仕様生成中`\n\n**コンテキスト圧迫チェック（Step MOD 開始前）:**\nAFFECTED_REPOS 内の全モジュール数の合計が 10 を超える場合（かつ分割実行継続マーカーがない場合）は、\n以下を提示して指示を求める:\n- **A: リポジトリ単位で分割実行（推奨）**\n- **B: モジュール単位で分割実行**\n- **C: 一括実行（遅い場合あり）**\n\nFor each `{repo}` in `AFFECTED_REPOS`（またはユーザーが選択したサブセット）:\n\n**機械的先決処理1: ベースライン退避（オーケストレータ・Bash）:**\n`MODULE_SCOPE` が空でない場合: `{XDDP_DIR}\u002Flatest-specs\u002F{repo}\u002F{module}\u002F`（`MODULE_SCOPE` の各モジュール）を\n`{CR_PATH}\u002Fpending-items\u002Fspecs-baseline\u002F{repo}\u002F{module}\u002F` へコピーする。\n`MODULE_SCOPE` が空の場合: `{XDDP_DIR}\u002Flatest-specs\u002F{repo}\u002F` 全体を\n`{CR_PATH}\u002Fpending-items\u002Fspecs-baseline\u002F{repo}\u002F` へコピーする。\nLet `BASELINE_OK` = コピー成功可否。失敗した場合（権限・容量等）は `BASELINE_OK: false` とし、\n`PENDING-MOD-{CR}-{repo}.md` に「ベースライン退避失敗 — 事後バージョン検証スキップ」と記録する\n（後述の compare 実行・後始末はスキップする）。\n\n**機械的先決処理2: precheck 実行（オーケストレータ・Bash）:**\n`PY=$(command -v python3 || command -v python) && \"$PY\" ~\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Fscripts\u002Fspec_version_delta.py precheck --existing {XDDP_DIR}\u002Flatest-specs\u002F{repo} --spo {CR_PATH}\u002F04_specout\u002F{repo}\u002Fmodules --line-change-threshold-pct 20 --out {CR_PATH}\u002Fpending-items\u002F.precheck-{repo}.json`\n終了コード0の場合、JSON の `force_update_files`（`{module}\u002F{file}` 形式の相対パスのリスト）を\n改行区切りの文字列にしたものを `FORCE_UPDATE_FILES` とする。\n終了コードが0以外の場合は `FORCE_UPDATE_FILES` を空とし、当該 repo は現行どおり全件 AI セマンティック判断に\n委ねる（フェイルセーフ。人には報告のみ行い停止しない）。\n\n**Agent tool** `subagent_type=xddp-specs-mod-agent`:\n```\nCR_NUMBER: {CR}\nCR_PATH: {CR_PATH}\nXDDP_DIR: {XDDP_DIR}\nREPO_NAME: {repo}\nREPO_PATH: {REPOS_MAP[repo]}\nDOCS: {DOCS}\nTODAY: {TODAY}\nMODULE_SCOPE: {ユーザー選択モジュール一覧、なければ空（= 全モジュール）}\nOUTPUT_FILE: {CR_PATH}\u002Fpending-items\u002FPENDING-MOD-{CR}-{repo}.md\nFORCE_UPDATE_FILES: {上記 precheck 結果から得た改行区切りの文字列}\n```\n\nWait for completion. エージェントは廃止候補・命名衝突・SPO照合不能等の人判断が必要な項目を\n内部で対話せず OUTPUT_FILE に**保留事項リストとして書き込む**（Step UC と同じファイル経由ハンドオフ方式）。\nオーケストレーターは Agent tool 完了後に `{CR_PATH}\u002Fpending-items\u002FPENDING-MOD-{CR}-{repo}.md` を Read し、\n内容を Let `MOD_PENDING[{repo}]` に保持する。\n保留事項は Step GATE で人に提示し、削除・リネーム実行はオーケストレーター側がファイル操作として直接行う。\n\n**機械的先決処理3: compare 実行（バージョン下限の事後検証・自動書き換え。`BASELINE_OK` が true の場合のみ）:**\n`PY=$(command -v python3 || command -v python) && \"$PY\" ~\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Fscripts\u002Fspec_version_delta.py compare --baseline {CR_PATH}\u002Fpending-items\u002Fspecs-baseline\u002F{repo} --current {XDDP_DIR}\u002Flatest-specs\u002F{repo} --out {CR_PATH}\u002Fpending-items\u002F.compare-{repo}.json`\n終了コード0の場合、JSON の `rewritten_files`（自動書き換えされたファイル一覧）を\n`PENDING-MOD-{CR}-{repo}.md` に「## バージョン下限の自動書き換え」セクションとして追記する\n（空の場合は「なし」と記載。監査のため人が事後に確認できるようにする）。\n終了コードが0以外の場合は事後検証をスキップした旨を同ファイルに記録する。\n\n**機械的先決処理4: ベースラインの後始末:**\n機械的先決処理3が正常完了した場合は `{CR_PATH}\u002Fpending-items\u002Fspecs-baseline\u002F{repo}\u002F` を削除する。\n`BASELINE_OK` が false、または機械的先決処理3が失敗・スキップされた場合は診断用に残す。\n\n---\n\n## Step CROSS: Generate\u002FUpdate cross specs (IS_MULTI のみ)\n\n**スキップ条件:** IS_MULTI でない、またはHAS_CROSS でない、または分割実行継続マーカーに `CROSS` が含まれる場合はスキップ。\n\nRead `~\u002F.claude\u002Fskills\u002Fxddp-common\u002FSKILL.md`, apply \"## Progress Update\" with:\n  CR_PATH: {CR_PATH}, STEP_NUM: 11, STATE: ? 進行中, DETAIL_STEP: `Step CROSS: クロス仕様生成中`\n\nRead `{CR_PATH}\u002F04_specout\u002Fcross\u002FSPO-{CR}-cross.md`.\n\n**`cross\u002Fsequences\u002F{flow}-seq.md` の生成\u002F更新:**\nクロスリポジトリ SPO §3（シーケンス図）のサブセクション見出しをケバブ変換して使用する。\n見出しなし・単一の場合は `main-seq.md` をデフォルトとする。\nテンプレート: `~\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_cross-sequence-template.md`\n\n※ cross SPO §2（構造図）は AFFECTED_REPOS 各リポジトリの `overview\u002Farchitecture.md` への補完情報として使用する。\n  cross\u002F 配下に独立した architecture ファイルは作成しない。\n\n**CHD cross インタフェース変更（`{CR_PATH}\u002F06_design\u002Fcross\u002FCHD-{CR}-cross.md` が存在する場合）:**\n「インタフェース変更サマリ」テーブルを Read する。\n\nFor each interface in the table:\n\n`{interface-kebab}` の命名ルール:\n- HTTP API: `{method}-{path-kebab}`（例: `POST \u002Fapi\u002Fjobs` → `post-api-jobs`）\n- イベント・キュー: `{event-name-kebab}`（例: `job.completed` → `job-completed`）\n- 関数API: `{functionName}` のキャメルケース・アンダースコアをケバブ変換\n- CANバスメッセージ: `can-{msg-name-kebab}` プレフィックス形式\n- シリアルコマンド（UART\u002FSPI\u002FI2C等）: `cmd-{command-name-kebab}` プレフィックス形式\n- IPC・共有メモリ: `ipc-{resource-name-kebab}` プレフィックス形式\n- その他: CHD インタフェース名の英訳ケバブ形式。翻訳困難な場合は `if-{連番}` フォールバックを使用し progress.md に対応表を記録する\n\n**`cross\u002Finterfaces\u002F{interface-kebab}\u002Fspec.md` の生成\u002F更新:**\nバージョン判定: breaking 変更（後退互換性を破壊）→ MAJOR、新パラメータ・フィールド追加（後退互換性あり）→ MINOR、ドキュメントのみの修正 → PATCH\nテンプレート: `~\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_cross-interface-spec-template.md`\nフロントマター `breaking:`: 今回の CHD の「インタフェース変更サマリ」にあるインタフェースは、その行の `breaking` の値\n（`true`／`false`）を書く。サマリに無いインタフェースの仕様は `breaking:` を変えない\n（`breaking:` は `last-updated-cr` の CR での更新が破壊的変更だったかを表す）。\n\n**`cross\u002Finterfaces\u002F{interface-kebab}\u002Fschema.md` の生成\u002F更新:**\nテンプレート: `~\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_cross-interface-schema-template.md`\n\n**廃止シーケンスファイル処理（Step CROSS）:**\n`{XDDP_DIR}\u002Flatest-specs\u002Fcross\u002Fsequences\u002F` 内の既存 `{flow-kebab}-seq.md` を列挙し、\n今回のクロスリポジトリ SPO §3 のサブセクション見出し（ケバブ変換後）に対応しないファイルを廃止候補として検出する。\nStep OV の廃止シーケンスファイル処理と同様の並行 CR 保護・廃止確認を実施する。\n※ クロス SPO が存在しない場合（HAS_CROSS=false でステップスキップ時）は廃止候補処理も実施しない。\n\n---\n\n## Step REV: AI Review Loop（今 CR で生成\u002F更新したファイルのみ対象）\n\nRead `~\u002F.claude\u002Fskills\u002Fxddp-common\u002FSKILL.md`, apply \"## Progress Update\" with:\n  CR_PATH: {CR_PATH}, STEP_NUM: 11, STATE: ? 進行中, DETAIL_STEP: `Step REV: AIレビュー中`\n\n> ※ DOCUMENT_TYPE は `SPEC` を使用する（旧設計の `CRS` は誤りのため修正）。\n\n生成ファイルをファイル種別単位で以下の4バッチにまとめ、バッチごとに1回のレビュアーエージェント呼び出しを行う:\n- バッチ1: モジュール仕様群（`{module}\u002Fspec.md` \u002F `state-machine.md` \u002F `structure.md` \u002F `sequences\u002F`）\n- バッチ2: overview 群（`overview\u002Farchitecture.md` \u002F `data-model.md` \u002F `crud.md` \u002F `dfd.md` \u002F `sequences\u002F`）\n- バッチ3: クロス群（`cross\u002Finterfaces\u002F**\u002F*` \u002F `cross\u002Fsequences\u002F`）—— IS_MULTI かつ今回生成した場合のみ\n- バッチ4: ユースケース群（`system\u002Fuse-cases\u002F**\u002F*`）—— Step UC が実行された場合のみ\n\n各バッチにファイルがない場合はそのバッチをスキップする。\n\n**バッチ内ファイル数上限:**\nバッチ1（モジュール仕様群）内のファイル総数が 30 を超える場合は、リポジトリ単位でさらに分割して呼び出す。\n他バッチも 30 超の場合は同様に分割する。\n（上限 30 は 1 ファイル平均 200〜400 行想定の暫定値。将来的に設定キーとして外出し検討。）\n\nFor each `{repo}` in `AFFECTED_REPOS`: Read `~\u002F.claude\u002Fskills\u002Fxddp-common\u002FSKILL.md`, apply\n\"## Discover CHD Files\" with `CR_PATH: {CR_PATH}, REPO_NAME: {repo}, CR: {CR}` → let\n`CHD_CONTENT_FILES_BY_REPO[{repo}]`.\nLet `ALL_CHD_CONTENT_FILES` = 全 repo の `CHD_CONTENT_FILES_BY_REPO` を連結したもの（バッチ3専用に残す）。\n\nLet `BATCH_TARGET_FILES_MAP` = {}（バッチ番号 → TARGET_FILES。Step GATE で参照するため\nfor-each ループの外側で宣言し、ループの全イテレーションを通じて保持する）\nLet `BATCH_REFERENCE_FILES_MAP` = {}（バッチ番号 → REFERENCE_FILES。同上）\nLet `BATCH_LAST_ROUND_MAP` = {}（バッチ番号 → 最終レビューラウンド番号。自動修正が\n発動せず初回のみで完了した場合は 1、自動修正後に再レビューした場合は 2）\n（バッチ番号はスキップされたバッチの番号が欠番になる「バッチ1〜4の固定ラベル」を用いる\n——既存の `batch{N}` 表記と同一の採番規則）\n\nFor each batch:\n  Let `TARGET_FILES` = {当該バッチのファイルパス一覧}（既存どおり）。\n  - バッチ3（クロス群）:\n    REFERENCE_FILES: [{CR_PATH}\u002F03_change-requirements\u002FCRS-{CR}.md, {ALL_CHD_CONTENT_FILES を展開}]  ← 変更なし\n  - バッチ4（ユースケース群）:\n    REFERENCE_FILES: [{CR_PATH}\u002F03_change-requirements\u002FCRS-{CR}.md]  ← CHD を除外（xddp-specs-uc-agent は CHD を受け取らない生成契約のため）\n  - バッチ1・2（モジュール仕様群／overview群）:\n    Let `BATCH_REPOS` = `TARGET_FILES` の各パスを `latest-specs\u002F{repo}\u002F` プレフィックスで走査し\n    抽出した repo 名の重複なし集合。\n    Let `CHD_SCOPE_FILES` = `BATCH_REPOS` に含まれる repo の `CHD_CONTENT_FILES_BY_REPO` の合併。\n    REFERENCE_FILES: [{CR_PATH}\u002F03_change-requirements\u002FCRS-{CR}.md, {CHD_SCOPE_FILES を展開}]\n\n  Read `~\u002F.claude\u002Fskills\u002Fxddp-common\u002Fprocedures\u002Finvoke-reviewer.md`, apply \"## Invoke Reviewer\" with:\n    DOCUMENT_TYPE: SPEC, TARGET_FILES: {TARGET_FILES}, REFERENCE_FILES: {上記で決定した値},\n    REVIEW_ROUND: 1, OUTPUT_FILE: {CR_PATH}\u002Freview\u002F11_specs-batch{N}-review.md,\n    PROGRESS_CR_PATH: {CR_PATH}, PROGRESS_STEP_NUM: 11, METRICS_TARGET: batch{N}\n\n  Let `BATCH_TARGET_FILES_MAP[N]` = {TARGET_FILES}\n  Let `BATCH_REFERENCE_FILES_MAP[N]` = {上記で決定した REFERENCE_FILES の値}\n  Let `BATCH_LAST_ROUND_MAP[N]` = 1（この時点で暫定値。自動修正が発動した場合は下記で 2 に更新）\n\n**AI レビュー指摘への自動修正（バッチごとに最大1サイクル）:**\n以下のカテゴリの指摘を自動修正する:\n- Mermaid 図の構文エラー（sequenceDiagram・erDiagram・classDiagram・graph TD \u002F flowchart 全タイプ）\n- シーケンス図の参加者漏れ・誤記（構文エラー以外の参加者不足）\n- SP 差分が誤ったセクションに適用されている（別セクションへの転記で対処）\n- フロントマター必須キー（`version`・`last-updated-cr`・`module`・`repo`）の漏れ\n- 変更履歴エントリの形式不備（テンプレートの列定義との不一致）\n- 気づきメモセクションの有無（Section 3-4 の気づきメモポリシーとの不整合）\n\n上記以外の指摘（機能仕様の内容判断・既存設計との整合性確認が必要なもの等）は Step GATE の人レビューコメントとして提示する。\n自動修正後は同バッチに対して再レビューを1回実施し、残指摘があれば Step GATE に渡す。\n再レビューは初回と同一の入力で `## Invoke Reviewer` を apply するが、`REVIEW_ROUND: 2`、\n`METRICS_TARGET: batch{N}-recheck` とする（初回は `REVIEW_ROUND: 1` \u002F `METRICS_TARGET: batch{N}`）:\n\n  Read `~\u002F.claude\u002Fskills\u002Fxddp-common\u002Fprocedures\u002Finvoke-reviewer.md`, apply \"## Invoke Reviewer\" with:\n    DOCUMENT_TYPE: SPEC, TARGET_FILES: {TARGET_FILES}, REFERENCE_FILES: {初回と同一の値},\n    REVIEW_ROUND: 2, OUTPUT_FILE: {CR_PATH}\u002Freview\u002F11_specs-batch{N}-review.md,\n    PROGRESS_CR_PATH: {CR_PATH}, PROGRESS_STEP_NUM: 11, METRICS_TARGET: batch{N}-recheck\n\n  Let `BATCH_LAST_ROUND_MAP[N]` = 2\n\n※ 修正サイクルは各バッチにつき最大1回とする（無限ループ防止）。\n\n---\n\n## Step GATE: Human Review Gate\n\nRead `~\u002F.claude\u002Fskills\u002Fxddp-common\u002FSKILL.md`, apply \"## Progress Update\" with:\n  CR_PATH: {CR_PATH}, STEP_NUM: 11, STATE: ? レビュー待ち, DETAIL_STEP: `Step GATE: 人レビュー待ち`\n\nLet `EXTRA_FILES` = `BATCH_TARGET_FILES_MAP` に含まれる全バッチ番号 `N` の `TARGET_FILES` を\n連結した一覧（Step REV で実際に実行されたバッチのみ。latest-specs 配下の全成果物ではなく、\n今回レビューされたファイルのみに絞ることで、他の並行 CR の編集を誤検知しない）。\n\nRead `~\u002F.claude\u002Fskills\u002Fxddp-common\u002Fscripts\u002Fxddp_review_brief.py` generate（レビューブリーフ生成）:\nRun via Bash:\n`PY=$(command -v python3 || command -v python) && \"$PY\" ~\u002F.claude\u002Fskills\u002Fxddp-common\u002Fscripts\u002Fxddp_review_brief.py generate --root {CR_PATH} --step 11 --baseline {CR_PATH}\u002F.phase-baseline-11.json --out {CR_PATH}\u002F.review-brief.md {EXTRA_FILES の各エントリについて}--extra-file {エントリ}`\n→ stdout の JSON を `BRIEF_SUMMARY`（`top`\u002F`counts`\u002F`brief_path`\u002F`est_total_min`）として取得する。\nIf the script is not found: tell the user to run `setup.sh` and continue without a brief（ゲートは止めない）。\nIf it errors: display stderr and continue without a brief.\n\n続けてゲートスナップショットを取得する（ユーザーの確認待ちに入る前に実行すること）:\nRun via Bash:\n`PY=$(command -v python3 || command -v python) && \"$PY\" ~\u002F.claude\u002Fskills\u002Fxddp-common\u002Fscripts\u002Fxddp_gate_snapshot.py snapshot --root {CR_PATH} --out {CR_PATH}\u002F.gate-snapshot.json {EXTRA_FILES の各エントリについて}--extra-file {エントリ}`\nIf the script is not found: tell the user to run `setup.sh` and stop. If it errors: display stderr and stop.\n\nTell the user:\n> ✅ 最新仕様書の生成・AIレビューが完了しました。内容を確認してください。\n>\n> **⚠️ 優先確認ファイル（MAJOR\u002FMINOR バージョンアップ・初回生成・AI合成）**\n> ※ これらは誤りが混入しやすい・影響が大きいため、先に確認してください。\n> {Step UC が実行された場合}\n> - ? system\u002Fuse-cases\u002F 以下（AI が CRS UR + SPO §3 から合成。意味的誤りが入りやすい）: {生成・更新ファイルの一覧}\n> {今回 MAJOR\u002FMINOR バージョンアップのファイルがある場合}\n> - ? MAJOR\u002FMINOR 更新ファイル: {該当ファイルの一覧}\n> {今回 PATCH のみのファイルがある場合}\n> - ⚪ PATCH 更新ファイル（確認省略可）: {該当ファイルの一覧}\n>\n> **全生成・更新ファイル一覧:**\n> {Step OV で各 repo について}\n> - {repo}\u002Foverview\u002F 以下: {生成・更新ファイルの一覧}\n> {Step MOD で各 repo・各モジュールについて}\n> - {repo}\u002F{module}\u002F 以下: {生成・更新ファイルの一覧}\n> {IS_MULTI かつ Step CROSS が実行された場合}\n> - cross\u002F 以下: {生成・更新ファイルの一覧}\n> {Step UC が実行された場合}\n> - system\u002Fuse-cases\u002F 以下: {生成・更新ファイルの一覧}\n>\n> {Step REV で未修正の指摘がある場合}\n> **AIレビューの未修正指摘:**\n> {指摘内容の概要}\n>\n> ⚠️ **並行 CR がある場合は xddp-11-specs を逐次実行してください**（overview 共有ファイルの同時更新リスク）。\n>\n> {BRIEF_SUMMARY が取得できている場合のみ挿入}\n> ? レビューブリーフを生成しました: {BRIEF_SUMMARY.brief_path}\n> ⚠️ 重点確認箇所トップN:\n> {BRIEF_SUMMARY.top の各件について} - {file}: {marker_type}（{location}）\n> 推奨レビュー時間の目安: 約 {BRIEF_SUMMARY.est_total_min} 分\n>\n> 問題なければ「**確認完了**」と入力してください。修正が必要な場合は直接ファイルを編集してください。\n> 複数ファイルにまたがる大きな修正を加えた場合は、確認完了の前に\n> `\u002Fxddp-review {CR} spec {対象ファイル}` で単体 AI レビューを実施することを推奨します\n> （ファイルごとに実行）。\n\n{`UC_PENDING`（Step UC が実行された場合）と `MOD_PENDING[{repo}]`（各 repo について）の内容を集約して提示する:}\n\n{UC_PENDING の廃止候補が空でない場合}\n> ⚠️ 以下のユースケースは現在の CRS に対応する UR が見つかりません（廃止候補）。\n> 削除しますか？ [削除する \u002F 保持する]\n> {UC_PENDING の廃止候補一覧}\n\n{MOD_PENDING[{repo}] の廃止候補が空でない repo がある場合}\n> ⚠️ 以下のモジュールは今回 CR の specout 対象に含まれていません（廃止候補）。\n> 削除・統合されたモジュールであれば削除してください。\n> {repo ごとの MOD_PENDING[{repo}] 廃止候補一覧}\n\n{UC_PENDING の related-modules 照合不能ユースケースが空でない場合}\n> ⚠️ 以下のユースケースの `related-modules:` が空リストです。関連モジュールを手動で設定してください:\n> {UC_PENDING の related-modules 照合不能ユースケース一覧}\n\n{UC_PENDING の命名衝突・重複記述が空でない場合}\n> ⚠️ 以下のユースケースで命名衝突・重複記述が検出されました。確認してください:\n> {UC_PENDING の命名衝突・重複記述一覧}\n\n{MOD_PENDING[{repo}] のケバブ名衝突・SPO照合不能モジュールが空でない repo がある場合}\n> ⚠️ 以下のモジュールでケバブ名衝突または SPO 照合不能が検出されました。確認してください:\n> {repo ごとの MOD_PENDING[{repo}] ケバブ名衝突・SPO照合不能モジュール一覧}\n\n{MOD_PENDING[{repo}] のリネーム候補が空でない repo がある場合}\n> ? 以下のモジュールにリネーム候補があります。新ケバブ名にコピーしますか？ [コピーする \u002F 何もしない]\n> {repo ごとの MOD_PENDING[{repo}] リネーム候補一覧}\n\nWait for the user to confirm.\n\n`CHANGED` の判定: Run via Bash:\n`PY=$(command -v python3 || command -v python) && \"$PY\" ~\u002F.claude\u002Fskills\u002Fxddp-common\u002Fscripts\u002Fxddp_gate_snapshot.py diff --snapshot {CR_PATH}\u002F.gate-snapshot.json`\n（`diff` に `--extra-file` を再指定する必要はない——snapshot 時に保存した `extra_files` 一覧を\nJSON から読み出して自動的に再スキャンする。）\n出力 JSON の `changed`（true\u002Ffalse）を `CHANGED` として採用する（`changed_files` は\n現時点ではバッチ単位フィルタに使用しない——今回実行した全バッチを再レビュー対象とする\n粗粒度な方針を採る。05.arch\u002F06.design 等の既存 `If CHANGED:` も repo 単位の粗粒度であり、\n本件固有の後退ではない。`changed_files` を用いたバッチ単位フィルタへの絞り込みは、\n効果とコストが未検証のため本プランのスコープ外とし、改善余地として本節にコメントを残す）。\n\n会話的フォールバック: `## Human Review Gate`（共通節）の Step 4 と同様、ユーザーの発言が具体的な\n修正内容に言及しているにもかかわらず `CHANGED = false` の場合のみ、「ファイルを変更しましたか？」と\n確認してから判定を上書きする。`xddp-11-specs` は `--extra-file`（`EXTRA_FILES`）が「今回レビューされた\n`BATCH_TARGET_FILES_MAP` 内のファイルのみ」に意図的に限定されている（並行 CR の誤検知回避のため）ため、\nそれ以外の `latest-specs\u002F` 配下ファイル（例: 今回の specout 対象外の既存モジュール、または新規作成した\nファイル）の直接編集は `--root {CR_PATH}` にも `--extra-file` にも捕捉されない。この会話的フォールバックは、\nその捕捉漏れに対する最後の安全網として他の3スキル以上に重要となる。\n\nIf `CHANGED`:\n  For each バッチ番号 `{N}` in `BATCH_TARGET_FILES_MAP`（Step REV で実行されたバッチのみ。\n  スキップされたバッチは `BATCH_TARGET_FILES_MAP` に存在しないため自動的に対象外）:\n    Read `~\u002F.claude\u002Fskills\u002Fxddp-common\u002Fprocedures\u002Ffinal-review-pass.md`, apply \"## Final Review Pass\" with:\n      DOCUMENT_TYPE: SPEC, TARGET_FILES: {BATCH_TARGET_FILES_MAP[N]},\n      REFERENCE_FILES: {BATCH_REFERENCE_FILES_MAP[N]},\n      REVIEW_ROUND: (BATCH_LAST_ROUND_MAP[N] + 1),\n      OUTPUT_FILE: {CR_PATH}\u002Freview\u002F11_specs-batch{N}-review.md\n  （Fixer は呼ばない。指摘が残る場合は人に判断を委ねる——他スキルの `If CHANGED:` と同一方針）\n\nユーザーの選択（削除する\u002F保持する・コピーする\u002F何もしない）に応じて、オーケストレーターが\nディレクトリ削除・リネームコピーをファイル操作として直接実行する（エージェントは再呼び出ししない）。\n保持を選択した場合は当該ファイルのフロントマターに `status: orphaned`（UC）または `status: unverified`（MOD）を追記する。\n\n---\n\n## Step DONE: Update progress.md, Report\n\n**分割実行継続マーカーの管理:**\n分割実行（Step UC 部分完了・Step MOD 分割等）を選択した場合、progress.md §15 に以下を追記する:\n```markdown\n## 工程11 分割実行メモ\n\u003C!-- xddp-11-specs が記録。次回実行時に継続対象を特定するために使用する -->\n- 完了済みステップ: {完了したステップ名一覧（例: UC, OV, CROSS）}\n- 未処理リポジトリ: {未処理リポジトリ名一覧}  （選択肢 A の場合）\n- 処理済みモジュール: {処理済みモジュール名一覧} in {repo}  （選択肢 B の場合）\n- 処理済みUR: {処理済みURケバブ名一覧}  （Step UC が部分完了の場合）\n- 未処理UR: {未処理URケバブ名一覧}  （Step UC が部分完了の場合）\n```\n全体完了後にマーカーセクションを削除する。\n\n分割実行を選択した場合（このタイミングで「## 工程11 分割実行メモ」を書き込んだ場合）に限り、まず以下を算出する:\nLet `未処理ステップ一覧` = 全体ステップ一覧（UC・OV・MOD。`IS_MULTI` の場合のみ CROSS も含む）から `完了済みステップ` を除いたもの。\n（この算出式が正本であり、xddp-status 側の同名表示はこの式と同一のものを用いる。定義を2箇所に重複させず、`xddp-status` 側は progress.md に書き込まれた `完了済みステップ:` の値から都度同じ式で再計算する。）\n\nStep 11 のステータスと `次に実行すべきコマンド` フィールドは、分割実行を選択したか・全体完了したかで以下のように分岐して設定する（`次に実行すべきコマンド` は他工程（`xddp-01-init\u002FSKILL.md`、`xddp-04-specout\u002FSKILL.md`）と同じ「裸コマンド1行」形式に統一する）:\n- **分割実行を選択した場合**:\n  Read `~\u002F.claude\u002Fskills\u002Fxddp-common\u002FSKILL.md`, apply \"## Progress Update\" with:\n    CR_PATH: {CR_PATH}, STEP_NUM: 11, STATE: ? 進行中, DETAIL_STEP: `Step DONE: 分割実行中（未処理: {未処理ステップ一覧}）`\n  Set \"次に実行すべきコマンド\" → `\u002Fxddp-11-specs {CR}`\n- **全体完了の場合**（分割実行マーカーを書き込まない、または既存マーカーを削除した場合）:\n  Read `~\u002F.claude\u002Fskills\u002Fxddp-common\u002FSKILL.md`, apply \"## Progress Update\" with:\n    CR_PATH: {CR_PATH}, STEP_NUM: 11, STATE: ✅ 完了, DETAIL_STEP: `-`,\n    ARTIFACT_LINK: `[latest-specs\u002F](..\u002Flatest-specs\u002F)`\n  Set \"次に実行すべきコマンド\" → `\u002Fxddp-close {CR}`\n\n**更新ファイル一覧の記録（progress.md §15）:**\n新構造では 1モジュール = 複数ファイルになるため、全ファイルパスを列挙する。\n\n**system\u002F ファイルの記録確認（必須チェック）:**\nStep UC が実行された場合（`{XDDP_DIR}\u002Flatest-specs\u002Fsystem\u002Fuse-cases\u002F` が存在する場合）:\n  Enumerate all `.md` files under `{XDDP_DIR}\u002Flatest-specs\u002Fsystem\u002Fuse-cases\u002F`.\n  For each file, verify it appears in the \"## 工程11 更新仕様書ファイル一覧\" section.\n  If any `system\u002Fuse-cases\u002F**\u002F*.md` file is missing from the list → add it before writing the section.\n  （xddp-close Step C0-3 の保護判定はこのリストに依存しており、記録漏れがあると\n   C0-3 で `{DOCS}\u002Fsystem\u002Fspecs\u002F` から旧バージョンファイルが上書きコピーされるリスクがある）\n\n````markdown\n## 工程11 更新仕様書ファイル一覧\n\n\u003C!-- xddp-11-specs が自動記録。xddp-close Step C0-3 で保護対象判定に使用する。 -->\n\n- latest-specs\u002F{repo}\u002Foverview\u002Farchitecture.md\n- latest-specs\u002F{repo}\u002F{module}\u002Fspec.md\n- latest-specs\u002F{repo}\u002F{module}\u002Fstructure.md\n- latest-specs\u002F{repo}\u002F{module}\u002Fsequences\u002Fmain-seq.md\n- latest-specs\u002Fcross\u002Finterfaces\u002F{interface-kebab}\u002Fspec.md\n- latest-specs\u002Fcross\u002Finterfaces\u002F{interface-kebab}\u002Fschema.md\n- latest-specs\u002Fcross\u002Fsequences\u002F{flow}-seq.md\n- latest-specs\u002Fsystem\u002Fuse-cases\u002F{usecase}\u002Fdescription.md\n- latest-specs\u002Fsystem\u002Fuse-cases\u002F{usecase}\u002Fsequences\u002F{scenario}-seq.md\n````\n\n(Overwrite the section if it already exists.)\n\nStep DONE 末尾の `Tell the user` ブロックも同じ分岐条件で出し分ける（`未処理ステップ一覧` は上で算出済みの値をそのまま使う）:\n\n- **分割実行を選択した場合:**\n  Tell the user:\n  > ? 工程11（最新仕様書作成）の一部が完了しました（未処理: {未処理ステップ一覧}）。\n  > 続けて以下のコマンドを再実行すると、未処理分のみ処理します:\n  > ```\n  > \u002Fxddp-11-specs {CR}\n  > ```\n  > 進捗確認は `\u002Fxddp-status {CR}` でも確認できます。\n\n- **全体完了の場合:**\n  Tell the user:\n  > 工程11が完了しました。続いて CR クローズ処理（気づき集約・知見ログ更新）を実行してください。\n  > ```\n  > \u002Fxddp-close {CR}\n  > ```\n  >\n  > ⚠️ **知識参照 degraded mode**: xddp-close 未実施のため `{DOCS}` への昇格が未完了です。\n  > 次の CR の工程2 は、`{DOCS}` に無い最新仕様を `latest-specs\u002F` から読みます（degraded）。\n  > xddp-close を実施してから次の CR を開始することを推奨します。\n  >\n  > 並行 CR が存在する場合は xddp-11-specs を逐次実行してください（overview 共有ファイルの同時更新リスク）。\n","You are orchestrating **XDDP Step 11 (process step 11) — Generate\u002FUpdate Latest Specifications**.\n\n> This step synthesises SPO (current state) + CHD (changes) into latest-specs\u002F (current truth).\n> New structure follows Kruchten 4+1 view model: Use Case \u002F Logical \u002F Development \u002F Process \u002F Physical.\n\n**Arguments:** $ARGUMENTS = [CR_NUMBER] (optional)\n\n---\n\nRead `~\u002F.claude\u002Fskills\u002Fxddp-common\u002FSKILL.md`, apply \"## CR Resolution\" with $ARGUMENTS → let `CR`, `REST_ARGS`.\nLet `TODAY` = today's date.\n\n(xddp.config.md lookup done in xddp-common\u002FSKILL.md「## CR Resolution」; reuse WORKSPACE_ROOT, XDDP_DIR,\nDOCS_DIR, DOCS, REPOS_MAP, REPOS_KEYS, IS_MULTI.)\n\n---\n\n## Step 0: Pre-flight（事前準備）\n\n1. Let `CR_PATH` = `{WORKSPACE_ROOT}\u002F{XDDP_DIR}\u002F{CR}`.\n\n2. Read `~\u002F.claude\u002Fskills\u002Fxddp-common\u002FSKILL.md`, apply \"## Resolve HAS_CROSS\" with:\n     IS_MULTI: {IS_MULTI}, ARTIFACT_PATH: {CR_PATH}\u002F04_specout\u002Fcross\u002FSPO-{CR}-cross.md\n   → let `HAS_CROSS`.\n   ※ HAS_CROSS 判定は SPO 存在ベース（旧 CHD 存在ベースから変更）。specout まで実施していれば cross\u002F ビューを生成する方針。\n   （他工程が「直前工程の cross 成果物」を見るのに対し、本工程は最新仕様書生成の起点となる\n   specout の cross SPO を基準にする。design\u002Fcode が未完了でも specout 済みなら cross ビューを\n   生成したいため、あえて直前工程＝design の DSN ではなく specout の SPO を見る）\n\n3. **AFFECTED_REPOS の確定（Step 0 で完全確定）:**\n   Read `~\u002F.claude\u002Fskills\u002Fxddp-common\u002FSKILL.md`, apply \"## Resolve Affected Repos\" with:\n     REPOS_KEYS: {REPOS_KEYS}, IS_MULTI: {IS_MULTI}, CR_PATH: {CR_PATH}, FILTER_BY_SPO: true,\n     HAS_CROSS: {HAS_CROSS}, CR: {CR}\n   → let `AFFECTED_REPOS`.\n\n4. **分割実行継続マーカーの確認:**\n   `{CR_PATH}\u002Fprogress.md` を Read し、「## 工程11 分割実行メモ」セクションが存在するかを確認する。\n   存在する場合:\n   - `完了済みステップ:` に含まれるステップ（UC・OV・CROSS 等）はスキップする\n   - `未処理リポジトリ:` が存在する場合は AFFECTED_REPOS をその値に限定する（選択肢 A の継続）\n   - `処理済みモジュール:` が存在する場合は当該 repo の MODULE_SCOPE をその値に限定する（選択肢 B の継続）\n   - `処理済みUR:` フィールドが存在する場合は UC をスキップせず `未処理UR:` リストのみを対象に Step UC を再実行する\n   存在しない場合は通常の全処理モードで実行する。\n\n5. Read `~\u002F.claude\u002Fskills\u002Fxddp-common\u002FSKILL.md`, apply \"## Progress Update\" with:\n     CR_PATH: {CR_PATH}, STEP_NUM: 11, STATE: ? 進行中, DETAIL_STEP: `Step 0: 事前準備中`\n\nRead `~\u002F.claude\u002Fskills\u002Fxddp-common\u002Fprocedures\u002Fsnapshot-phase-baseline.md`, apply \"## Snapshot Phase Baseline\" with:\n  CR_PATH: {CR_PATH}, STEP_NUM: 11\n\n---\n\n## Step UC: Synthesize Use Cases (system\u002Fuse-cases\u002F)\n\n**スキップ条件（以下のいずれかに該当する場合はこのステップをスキップ）:**\n- 分割実行継続マーカーの `完了済みステップ:` に `UC` が含まれる（かつ `処理済みUR:` フィールドが存在しない）\n- CRS に UR（ユーザー要求）が存在しない（技術的変更のみ）\n\nRead `~\u002F.claude\u002Fskills\u002Fxddp-common\u002FSKILL.md`, apply \"## Progress Update\" with:\n  CR_PATH: {CR_PATH}, STEP_NUM: 11, STATE: ? 進行中, DETAIL_STEP: `Step UC: ユースケース合成中`\n\nRead `{CR_PATH}\u002F03_change-requirements\u002FCRS-{CR}.md` → CRS §2 UR list. Let `UR_COUNT` = UR 総数。\n\n**コンテキスト圧迫チェック（Step UC 開始前・オーケストレーター側で実施）:**\n`UR_COUNT` が 20 を超える場合（かつ分割実行継続マーカーがない場合）は、以下を提示して指示を求める:\n- **A: UR 単位で分割実行（推奨）** — 今回は指定 UR のみ処理し、残りは次回実行で処理する\n- **B: 一括実行** — 全 UR を一括処理する（コンテキスト圧迫のリスクあり）\n選択結果に応じて処理対象 UR リストを確定する（`RESUME_UR_LIST` に反映）。\n\n**Agent tool** `subagent_type=xddp-specs-uc-agent`:\n```\nCR_NUMBER: {CR}\nCR_PATH: {CR_PATH}\nXDDP_DIR: {XDDP_DIR}\nDOCS: {DOCS}\nAFFECTED_REPOS: {AFFECTED_REPOS}\nHAS_CROSS: {HAS_CROSS}\nTODAY: {TODAY}\nRESUME_UR_LIST: {上記チェックで確定した処理対象 UR リスト、分割実行継続マーカーの 未処理UR: リスト、または空（=全UR）}\nOUTPUT_FILE: {CR_PATH}\u002Fpending-items\u002FPENDING-UC-{CR}.md\n```\n\nWait for completion. エージェントは廃止候補・命名衝突・related-modules 照合不能等の人判断が必要な項目を\n内部で対話せず OUTPUT_FILE に**保留事項リストとして書き込む**（既存エージェントの確立されたファイル経由ハンドオフパターンに倣う。\n`xddp-verifier-agent.md` の `OUTPUT_FILE` 契約と `xddp-08-verify\u002FSKILL.md` の Read-back 処理と同じ方式）。\nオーケストレーターは Agent tool 完了後に `{CR_PATH}\u002Fpending-items\u002FPENDING-UC-{CR}.md` を\nRead し、内容を Let `UC_PENDING` に保持する。保留事項は Step GATE で人に提示する。\n廃止候補の削除実行は Step GATE 後にオーケストレーター側がファイル操作として直接行う（エージェントを再呼び出ししない）。\n\n---\n\n## Step OV: Generate\u002FUpdate overview (per repo)\n\n**スキップ条件:** 分割実行継続マーカーの `完了済みステップ:` に `OV` が含まれる場合はスキップ。\n\nRead `~\u002F.claude\u002Fskills\u002Fxddp-common\u002FSKILL.md`, apply \"## Progress Update\" with:\n  CR_PATH: {CR_PATH}, STEP_NUM: 11, STATE: ? 進行中, DETAIL_STEP: `Step OV: overview 生成中`\n\nFor each `{repo}` in `AFFECTED_REPOS`:\n\nRead `{CR_PATH}\u002F04_specout\u002F{repo}\u002FSPO-{CR}.md`.\nGet `SPECOUT_MODULES` = `{CR_PATH}\u002F04_specout\u002F{repo}\u002Fmodules\u002F` 配下のディレクトリ名リスト（機械的取得）。\n\n**`overview\u002Farchitecture.md` の生成\u002F更新（マージ方式）:**\nSPO サマリーの「全体アーキテクチャ図」セクション（`## 2.` または「モジュール依存・コンポーネント構成」と表記されるセクション）の内容を使用する。\n既存 `{XDDP_DIR}\u002Flatest-specs\u002F{repo}\u002Foverview\u002Farchitecture.md` が存在する場合:\n- **機械的先決基準（更新判断）:** SPO の Mermaid ブロックのノード数\u002Fエッジ数が既存ファイルと異なる、\n  またはテキストセクションの行数が 20% 以上変化している → 即時「更新あり」と判定\n- 機械的基準に該当しない場合のみ AI セマンティック比較を実施\n- 更新時の方針:\n  - SPECOUT_MODULES に含まれるモジュールの情報は最新 SPO の内容で更新する\n  - SPECOUT_MODULES に含まれない（今回 specout 未実施）モジュールの情報は保持する\n  - 削除されたモジュール（CHD に削除記述がある場合）は architecture.md から削除する\n  ※ 判定は SPECOUT_MODULES（ディレクトリ名リスト）との機械的照合。AI のセマンティック判断に依存しない。\n- **モジュール名ドリフト検出（ノンブロッキング）:**\n  SPECOUT_MODULES に新規名があり既存エントリに類似名がある場合（例: 新規 `authentication` と既存 `auth`）は\n  「リネーム候補: `auth` → `authentication`」として気づきメモに記録し人に確認を求める（処理は継続）。\n- **⚠️ サイレント廃止リスク（実装コメント）:**\n  CHD に削除記述がなく今回 specout 対象外のモジュールは廃止候補として検出できない。\n  複数 CR にわたる knowledge base の陳腐化を防ぐため、定期的な「棚卸し CR」（全モジュール specout の実施）を推奨する。\n  この制約は data-model.md \u002F crud.md にも同様に適用される。\n- **⚠️ 並行 CR による同時更新リスク（実装コメント）:**\n  architecture.md \u002F data-model.md \u002F crud.md は複数 CR が同一リポジトリを対象とする場合に同時更新リスクがある共有ファイルである。\n  同一リポジトリに並行 CR が存在する場合は xddp-11-specs を逐次実行することを推奨する。\n  将来的なロック機構は improvement-backlog に記録する（今回スコープ外）。\n存在しない場合: `~\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_overview-architecture-template.md` から初期生成する。\n\n**バージョニング（architecture.md）:**\n| 条件 | バージョン |\n|---|---|\n| 新規モジュールのエントリを追加 | MINOR |\n| 既存モジュール説明・依存関係を更新（内容変更あり） | PATCH |\nSPO なし CHD あり の PATCH 更新では `last-verified-cr:` を更新しない。\n\n**`overview\u002Fsequences\u002F{feature}-seq.md` の生成\u002F更新:**\nSPO サマリーの「モジュール間シーケンス図」セクションのサブセクション見出しをケバブ変換して使用する。\n見出しなし・単一の場合は `main-seq.md` をデフォルトとする。\nテンプレート: `~\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_overview-sequence-template.md`\n\n**廃止シーケンスファイル処理（Step OV）:**\n`{XDDP_DIR}\u002Flatest-specs\u002F{repo}\u002Foverview\u002Fsequences\u002F` 内の既存 `{feature}-seq.md` を列挙し、\n今回の SPO §3 サブセクション見出し（ケバブ変換後）に対応しないファイルを「廃止候補」として検出する。\n並行 CR 保護: フロントマター `last-updated-cr:` が現在の CR と異なる場合、`{XDDP_DIR}\u002F{last-updated-cr}\u002Fprogress.md` を確認する。\n  - ファイルが存在し、かつ「## CR クローズ」セクションを含まない（クローズ未完了）→ 当該他 CR が進行中とみなし\n    廃止候補から除外する（「他 CR（{last-updated-cr}）進行中 — スキップ」として提示）。\n  - ファイルが存在しない、または「## CR クローズ」セクションを含む（クローズ済み）→ 保護対象外とし、\n    通常どおり廃止候補として検出する。\n廃止候補が存在する場合はユーザーに提示して削除確認を求める。\nSPO 見出し名変更（内容が同一だが名称が変わった場合）も廃止候補として検出される。\nコンテンツの意味的同一性が高い場合はコピー（旧名→新名）を提案する。\n\n**`overview\u002Fdfd.md` の生成\u002F更新:**\nSPO サマリーの「データフロー図（DFD）」（`## 4.2` または見出し名一致）セクションを参照する。\n「副作用なし（省略）」または「対象外」の場合はスキップする。\nテンプレート: `~\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_overview-dfd-template.md`\n\n**`overview\u002Fdata-model.md` の生成\u002F更新（マージ方式）:**\nSPO サマリーの「データモデル（エンティティ関連図・データ構造定義）」セクション（`## 4.3` または見出し名一致）を参照する。\n「対象外」記載またはセクションが存在しない場合は生成スキップ（既存ファイルがあれば保持）。\n既存ファイルが存在する場合は architecture.md と同様のマージ方式で更新する。\n**エンティティ名正規化ルール:**\n- 既存 `data-model.md` に同名候補がある場合: 既存名称を正規名として採用する\n- 既存 `data-model.md` に類似名がある場合（例: `User` vs `UserEntity`）:\n  AI がセマンティック類似度で同一対象と判断できる場合は既存名を優先する\n  判断困難な場合は「`UserEntity`（既存: `User`）統合候補」として気づきメモに記録しノンブロッキングで継続する\n- 初回生成の場合: SPO の表記をそのまま採用する\nテンプレート: `~\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_overview-data-model-template.md`\n`source:` フロントマターキー: SPO §4.3 の `source` アノテーション（`ai-inferred` または `spo`）を引き継ぐ。\n\n**`overview\u002Fcrud.md` の生成\u002F更新（マージ方式）:**\nSPO サマリーの「データアクセスマトリクス（CRUDマトリクス・Read\u002FWriteマトリクス）」セクション（`## 4.4` または見出し名一致）を参照する。\n「対象外」記載またはセクションが存在しない場合は生成スキップ（既存ファイルがあれば保持）。\nマージ方式: 処理名（行）をキーに照合し、今回の SPO §4.4 に記述されているものは更新、非記載は保持。\nテンプレート: `~\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_overview-crud-template.md`\n\n**`overview\u002Fdeployment.md` の生成\u002F更新:**\nSPO サマリーに「ハードウェア構成・デプロイ構成」セクションが存在する場合のみ生成する。\nテンプレート: `~\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_overview-deployment-template.md`\n\n※ セクション参照は見出し名ベースで行う（セクション番号は SPO テンプレート種別により異なるため）。\n\n---\n\n## Step MOD: Generate\u002FUpdate module specs (per repo, per module)\n\n**スキップ条件:** 分割実行継続マーカーの `完了済みステップ:` に `MOD` が含まれる場合はスキップ。\n\nRead `~\u002F.claude\u002Fskills\u002Fxddp-common\u002FSKILL.md`, apply \"## Progress Update\" with:\n  CR_PATH: {CR_PATH}, STEP_NUM: 11, STATE: ? 進行中, DETAIL_STEP: `Step MOD: モジュール仕様生成中`\n\n**コンテキスト圧迫チェック（Step MOD 開始前）:**\nAFFECTED_REPOS 内の全モジュール数の合計が 10 を超える場合（かつ分割実行継続マーカーがない場合）は、\n以下を提示して指示を求める:\n- **A: リポジトリ単位で分割実行（推奨）**\n- **B: モジュール単位で分割実行**\n- **C: 一括実行（遅い場合あり）**\n\nFor each `{repo}` in `AFFECTED_REPOS`（またはユーザーが選択したサブセット）:\n\n**機械的先決処理1: ベースライン退避（オーケストレータ・Bash）:**\n`MODULE_SCOPE` が空でない場合: `{XDDP_DIR}\u002Flatest-specs\u002F{repo}\u002F{module}\u002F`（`MODULE_SCOPE` の各モジュール）を\n`{CR_PATH}\u002Fpending-items\u002Fspecs-baseline\u002F{repo}\u002F{module}\u002F` へコピーする。\n`MODULE_SCOPE` が空の場合: `{XDDP_DIR}\u002Flatest-specs\u002F{repo}\u002F` 全体を\n`{CR_PATH}\u002Fpending-items\u002Fspecs-baseline\u002F{repo}\u002F` へコピーする。\nLet `BASELINE_OK` = コピー成功可否。失敗した場合（権限・容量等）は `BASELINE_OK: false` とし、\n`PENDING-MOD-{CR}-{repo}.md` に「ベースライン退避失敗 — 事後バージョン検証スキップ」と記録する\n（後述の compare 実行・後始末はスキップする）。\n\n**機械的先決処理2: precheck 実行（オーケストレータ・Bash）:**\n`PY=$(command -v python3 || command -v python) && \"$PY\" ~\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Fscripts\u002Fspec_version_delta.py precheck --existing {XDDP_DIR}\u002Flatest-specs\u002F{repo} --spo {CR_PATH}\u002F04_specout\u002F{repo}\u002Fmodules --line-change-threshold-pct 20 --out {CR_PATH}\u002Fpending-items\u002F.precheck-{repo}.json`\n終了コード0の場合、JSON の `force_update_files`（`{module}\u002F{file}` 形式の相対パスのリスト）を\n改行区切りの文字列にしたものを `FORCE_UPDATE_FILES` とする。\n終了コードが0以外の場合は `FORCE_UPDATE_FILES` を空とし、当該 repo は現行どおり全件 AI セマンティック判断に\n委ねる（フェイルセーフ。人には報告のみ行い停止しない）。\n\n**Agent tool** `subagent_type=xddp-specs-mod-agent`:\n```\nCR_NUMBER: {CR}\nCR_PATH: {CR_PATH}\nXDDP_DIR: {XDDP_DIR}\nREPO_NAME: {repo}\nREPO_PATH: {REPOS_MAP[repo]}\nDOCS: {DOCS}\nTODAY: {TODAY}\nMODULE_SCOPE: {ユーザー選択モジュール一覧、なければ空（= 全モジュール）}\nOUTPUT_FILE: {CR_PATH}\u002Fpending-items\u002FPENDING-MOD-{CR}-{repo}.md\nFORCE_UPDATE_FILES: {上記 precheck 結果から得た改行区切りの文字列}\n```\n\nWait for completion. エージェントは廃止候補・命名衝突・SPO照合不能等の人判断が必要な項目を\n内部で対話せず OUTPUT_FILE に**保留事項リストとして書き込む**（Step UC と同じファイル経由ハンドオフ方式）。\nオーケストレーターは Agent tool 完了後に `{CR_PATH}\u002Fpending-items\u002FPENDING-MOD-{CR}-{repo}.md` を Read し、\n内容を Let `MOD_PENDING[{repo}]` に保持する。\n保留事項は Step GATE で人に提示し、削除・リネーム実行はオーケストレーター側がファイル操作として直接行う。\n\n**機械的先決処理3: compare 実行（バージョン下限の事後検証・自動書き換え。`BASELINE_OK` が true の場合のみ）:**\n`PY=$(command -v python3 || command -v python) && \"$PY\" ~\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Fscripts\u002Fspec_version_delta.py compare --baseline {CR_PATH}\u002Fpending-items\u002Fspecs-baseline\u002F{repo} --current {XDDP_DIR}\u002Flatest-specs\u002F{repo} --out {CR_PATH}\u002Fpending-items\u002F.compare-{repo}.json`\n終了コード0の場合、JSON の `rewritten_files`（自動書き換えされたファイル一覧）を\n`PENDING-MOD-{CR}-{repo}.md` に「## バージョン下限の自動書き換え」セクションとして追記する\n（空の場合は「なし」と記載。監査のため人が事後に確認できるようにする）。\n終了コードが0以外の場合は事後検証をスキップした旨を同ファイルに記録する。\n\n**機械的先決処理4: ベースラインの後始末:**\n機械的先決処理3が正常完了した場合は `{CR_PATH}\u002Fpending-items\u002Fspecs-baseline\u002F{repo}\u002F` を削除する。\n`BASELINE_OK` が false、または機械的先決処理3が失敗・スキップされた場合は診断用に残す。\n\n---\n\n## Step CROSS: Generate\u002FUpdate cross specs (IS_MULTI のみ)\n\n**スキップ条件:** IS_MULTI でない、またはHAS_CROSS でない、または分割実行継続マーカーに `CROSS` が含まれる場合はスキップ。\n\nRead `~\u002F.claude\u002Fskills\u002Fxddp-common\u002FSKILL.md`, apply \"## Progress Update\" with:\n  CR_PATH: {CR_PATH}, STEP_NUM: 11, STATE: ? 進行中, DETAIL_STEP: `Step CROSS: クロス仕様生成中`\n\nRead `{CR_PATH}\u002F04_specout\u002Fcross\u002FSPO-{CR}-cross.md`.\n\n**`cross\u002Fsequences\u002F{flow}-seq.md` の生成\u002F更新:**\nクロスリポジトリ SPO §3（シーケンス図）のサブセクション見出しをケバブ変換して使用する。\n見出しなし・単一の場合は `main-seq.md` をデフォルトとする。\nテンプレート: `~\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_cross-sequence-template.md`\n\n※ cross SPO §2（構造図）は AFFECTED_REPOS 各リポジトリの `overview\u002Farchitecture.md` への補完情報として使用する。\n  cross\u002F 配下に独立した architecture ファイルは作成しない。\n\n**CHD cross インタフェース変更（`{CR_PATH}\u002F06_design\u002Fcross\u002FCHD-{CR}-cross.md` が存在する場合）:**\n「インタフェース変更サマリ」テーブルを Read する。\n\nFor each interface in the table:\n\n`{interface-kebab}` の命名ルール:\n- HTTP API: `{method}-{path-kebab}`（例: `POST \u002Fapi\u002Fjobs` → `post-api-jobs`）\n- イベント・キュー: `{event-name-kebab}`（例: `job.completed` → `job-completed`）\n- 関数API: `{functionName}` のキャメルケース・アンダースコアをケバブ変換\n- CANバスメッセージ: `can-{msg-name-kebab}` プレフィックス形式\n- シリアルコマンド（UART\u002FSPI\u002FI2C等）: `cmd-{command-name-kebab}` プレフィックス形式\n- IPC・共有メモリ: `ipc-{resource-name-kebab}` プレフィックス形式\n- その他: CHD インタフェース名の英訳ケバブ形式。翻訳困難な場合は `if-{連番}` フォールバックを使用し progress.md に対応表を記録する\n\n**`cross\u002Finterfaces\u002F{interface-kebab}\u002Fspec.md` の生成\u002F更新:**\nバージョン判定: breaking 変更（後退互換性を破壊）→ MAJOR、新パラメータ・フィールド追加（後退互換性あり）→ MINOR、ドキュメントのみの修正 → PATCH\nテンプレート: `~\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_cross-interface-spec-template.md`\nフロントマター `breaking:`: 今回の CHD の「インタフェース変更サマリ」にあるインタフェースは、その行の `breaking` の値\n（`true`／`false`）を書く。サマリに無いインタフェースの仕様は `breaking:` を変えない\n（`breaking:` は `last-updated-cr` の CR での更新が破壊的変更だったかを表す）。\n\n**`cross\u002Finterfaces\u002F{interface-kebab}\u002Fschema.md` の生成\u002F更新:**\nテンプレート: `~\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_cross-interface-schema-template.md`\n\n**廃止シーケンスファイル処理（Step CROSS）:**\n`{XDDP_DIR}\u002Flatest-specs\u002Fcross\u002Fsequences\u002F` 内の既存 `{flow-kebab}-seq.md` を列挙し、\n今回のクロスリポジトリ SPO §3 のサブセクション見出し（ケバブ変換後）に対応しないファイルを廃止候補として検出する。\nStep OV の廃止シーケンスファイル処理と同様の並行 CR 保護・廃止確認を実施する。\n※ クロス SPO が存在しない場合（HAS_CROSS=false でステップスキップ時）は廃止候補処理も実施しない。\n\n---\n\n## Step REV: AI Review Loop（今 CR で生成\u002F更新したファイルのみ対象）\n\nRead `~\u002F.claude\u002Fskills\u002Fxddp-common\u002FSKILL.md`, apply \"## Progress Update\" with:\n  CR_PATH: {CR_PATH}, STEP_NUM: 11, STATE: ? 進行中, DETAIL_STEP: `Step REV: AIレビュー中`\n\n> ※ DOCUMENT_TYPE は `SPEC` を使用する（旧設計の `CRS` は誤りのため修正）。\n\n生成ファイルをファイル種別単位で以下の4バッチにまとめ、バッチごとに1回のレビュアーエージェント呼び出しを行う:\n- バッチ1: モジュール仕様群（`{module}\u002Fspec.md` \u002F `state-machine.md` \u002F `structure.md` \u002F `sequences\u002F`）\n- バッチ2: overview 群（`overview\u002Farchitecture.md` \u002F `data-model.md` \u002F `crud.md` \u002F `dfd.md` \u002F `sequences\u002F`）\n- バッチ3: クロス群（`cross\u002Finterfaces\u002F**\u002F*` \u002F `cross\u002Fsequences\u002F`）—— IS_MULTI かつ今回生成した場合のみ\n- バッチ4: ユースケース群（`system\u002Fuse-cases\u002F**\u002F*`）—— Step UC が実行された場合のみ\n\n各バッチにファイルがない場合はそのバッチをスキップする。\n\n**バッチ内ファイル数上限:**\nバッチ1（モジュール仕様群）内のファイル総数が 30 を超える場合は、リポジトリ単位でさらに分割して呼び出す。\n他バッチも 30 超の場合は同様に分割する。\n（上限 30 は 1 ファイル平均 200〜400 行想定の暫定値。将来的に設定キーとして外出し検討。）\n\nFor each `{repo}` in `AFFECTED_REPOS`: Read `~\u002F.claude\u002Fskills\u002Fxddp-common\u002FSKILL.md`, apply\n\"## Discover CHD Files\" with `CR_PATH: {CR_PATH}, REPO_NAME: {repo}, CR: {CR}` → let\n`CHD_CONTENT_FILES_BY_REPO[{repo}]`.\nLet `ALL_CHD_CONTENT_FILES` = 全 repo の `CHD_CONTENT_FILES_BY_REPO` を連結したもの（バッチ3専用に残す）。\n\nLet `BATCH_TARGET_FILES_MAP` = {}（バッチ番号 → TARGET_FILES。Step GATE で参照するため\nfor-each ループの外側で宣言し、ループの全イテレーションを通じて保持する）\nLet `BATCH_REFERENCE_FILES_MAP` = {}（バッチ番号 → REFERENCE_FILES。同上）\nLet `BATCH_LAST_ROUND_MAP` = {}（バッチ番号 → 最終レビューラウンド番号。自動修正が\n発動せず初回のみで完了した場合は 1、自動修正後に再レビューした場合は 2）\n（バッチ番号はスキップされたバッチの番号が欠番になる「バッチ1〜4の固定ラベル」を用いる\n——既存の `batch{N}` 表記と同一の採番規則）\n\nFor each batch:\n  Let `TARGET_FILES` = {当該バッチのファイルパス一覧}（既存どおり）。\n  - バッチ3（クロス群）:\n    REFERENCE_FILES: [{CR_PATH}\u002F03_change-requirements\u002FCRS-{CR}.md, {ALL_CHD_CONTENT_FILES を展開}]  ← 変更なし\n  - バッチ4（ユースケース群）:\n    REFERENCE_FILES: [{CR_PATH}\u002F03_change-requirements\u002FCRS-{CR}.md]  ← CHD を除外（xddp-specs-uc-agent は CHD を受け取らない生成契約のため）\n  - バッチ1・2（モジュール仕様群／overview群）:\n    Let `BATCH_REPOS` = `TARGET_FILES` の各パスを `latest-specs\u002F{repo}\u002F` プレフィックスで走査し\n    抽出した repo 名の重複なし集合。\n    Let `CHD_SCOPE_FILES` = `BATCH_REPOS` に含まれる repo の `CHD_CONTENT_FILES_BY_REPO` の合併。\n    REFERENCE_FILES: [{CR_PATH}\u002F03_change-requirements\u002FCRS-{CR}.md, {CHD_SCOPE_FILES を展開}]\n\n  Read `~\u002F.claude\u002Fskills\u002Fxddp-common\u002Fprocedures\u002Finvoke-reviewer.md`, apply \"## Invoke Reviewer\" with:\n    DOCUMENT_TYPE: SPEC, TARGET_FILES: {TARGET_FILES}, REFERENCE_FILES: {上記で決定した値},\n    REVIEW_ROUND: 1, OUTPUT_FILE: {CR_PATH}\u002Freview\u002F11_specs-batch{N}-review.md,\n    PROGRESS_CR_PATH: {CR_PATH}, PROGRESS_STEP_NUM: 11, METRICS_TARGET: batch{N}\n\n  Let `BATCH_TARGET_FILES_MAP[N]` = {TARGET_FILES}\n  Let `BATCH_REFERENCE_FILES_MAP[N]` = {上記で決定した REFERENCE_FILES の値}\n  Let `BATCH_LAST_ROUND_MAP[N]` = 1（この時点で暫定値。自動修正が発動した場合は下記で 2 に更新）\n\n**AI レビュー指摘への自動修正（バッチごとに最大1サイクル）:**\n以下のカテゴリの指摘を自動修正する:\n- Mermaid 図の構文エラー（sequenceDiagram・erDiagram・classDiagram・graph TD \u002F flowchart 全タイプ）\n- シーケンス図の参加者漏れ・誤記（構文エラー以外の参加者不足）\n- SP 差分が誤ったセクションに適用されている（別セクションへの転記で対処）\n- フロントマター必須キー（`version`・`last-updated-cr`・`module`・`repo`）の漏れ\n- 変更履歴エントリの形式不備（テンプレートの列定義との不一致）\n- 気づきメモセクションの有無（Section 3-4 の気づきメモポリシーとの不整合）\n\n上記以外の指摘（機能仕様の内容判断・既存設計との整合性確認が必要なもの等）は Step GATE の人レビューコメントとして提示する。\n自動修正後は同バッチに対して再レビューを1回実施し、残指摘があれば Step GATE に渡す。\n再レビューは初回と同一の入力で `## Invoke Reviewer` を apply するが、`REVIEW_ROUND: 2`、\n`METRICS_TARGET: batch{N}-recheck` とする（初回は `REVIEW_ROUND: 1` \u002F `METRICS_TARGET: batch{N}`）:\n\n  Read `~\u002F.claude\u002Fskills\u002Fxddp-common\u002Fprocedures\u002Finvoke-reviewer.md`, apply \"## Invoke Reviewer\" with:\n    DOCUMENT_TYPE: SPEC, TARGET_FILES: {TARGET_FILES}, REFERENCE_FILES: {初回と同一の値},\n    REVIEW_ROUND: 2, OUTPUT_FILE: {CR_PATH}\u002Freview\u002F11_specs-batch{N}-review.md,\n    PROGRESS_CR_PATH: {CR_PATH}, PROGRESS_STEP_NUM: 11, METRICS_TARGET: batch{N}-recheck\n\n  Let `BATCH_LAST_ROUND_MAP[N]` = 2\n\n※ 修正サイクルは各バッチにつき最大1回とする（無限ループ防止）。\n\n---\n\n## Step GATE: Human Review Gate\n\nRead `~\u002F.claude\u002Fskills\u002Fxddp-common\u002FSKILL.md`, apply \"## Progress Update\" with:\n  CR_PATH: {CR_PATH}, STEP_NUM: 11, STATE: ? レビュー待ち, DETAIL_STEP: `Step GATE: 人レビュー待ち`\n\nLet `EXTRA_FILES` = `BATCH_TARGET_FILES_MAP` に含まれる全バッチ番号 `N` の `TARGET_FILES` を\n連結した一覧（Step REV で実際に実行されたバッチのみ。latest-specs 配下の全成果物ではなく、\n今回レビューされたファイルのみに絞ることで、他の並行 CR の編集を誤検知しない）。\n\nRead `~\u002F.claude\u002Fskills\u002Fxddp-common\u002Fscripts\u002Fxddp_review_brief.py` generate（レビューブリーフ生成）:\nRun via Bash:\n`PY=$(command -v python3 || command -v python) && \"$PY\" ~\u002F.claude\u002Fskills\u002Fxddp-common\u002Fscripts\u002Fxddp_review_brief.py generate --root {CR_PATH} --step 11 --baseline {CR_PATH}\u002F.phase-baseline-11.json --out {CR_PATH}\u002F.review-brief.md {EXTRA_FILES の各エントリについて}--extra-file {エントリ}`\n→ stdout の JSON を `BRIEF_SUMMARY`（`top`\u002F`counts`\u002F`brief_path`\u002F`est_total_min`）として取得する。\nIf the script is not found: tell the user to run `setup.sh` and continue without a brief（ゲートは止めない）。\nIf it errors: display stderr and continue without a brief.\n\n続けてゲートスナップショットを取得する（ユーザーの確認待ちに入る前に実行すること）:\nRun via Bash:\n`PY=$(command -v python3 || command -v python) && \"$PY\" ~\u002F.claude\u002Fskills\u002Fxddp-common\u002Fscripts\u002Fxddp_gate_snapshot.py snapshot --root {CR_PATH} --out {CR_PATH}\u002F.gate-snapshot.json {EXTRA_FILES の各エントリについて}--extra-file {エントリ}`\nIf the script is not found: tell the user to run `setup.sh` and stop. If it errors: display stderr and stop.\n\nTell the user:\n> ✅ 最新仕様書の生成・AIレビューが完了しました。内容を確認してください。\n>\n> **⚠️ 優先確認ファイル（MAJOR\u002FMINOR バージョンアップ・初回生成・AI合成）**\n> ※ これらは誤りが混入しやすい・影響が大きいため、先に確認してください。\n> {Step UC が実行された場合}\n> - ? system\u002Fuse-cases\u002F 以下（AI が CRS UR + SPO §3 から合成。意味的誤りが入りやすい）: {生成・更新ファイルの一覧}\n> {今回 MAJOR\u002FMINOR バージョンアップのファイルがある場合}\n> - ? MAJOR\u002FMINOR 更新ファイル: {該当ファイルの一覧}\n> {今回 PATCH のみのファイルがある場合}\n> - ⚪ PATCH 更新ファイル（確認省略可）: {該当ファイルの一覧}\n>\n> **全生成・更新ファイル一覧:**\n> {Step OV で各 repo について}\n> - {repo}\u002Foverview\u002F 以下: {生成・更新ファイルの一覧}\n> {Step MOD で各 repo・各モジュールについて}\n> - {repo}\u002F{module}\u002F 以下: {生成・更新ファイルの一覧}\n> {IS_MULTI かつ Step CROSS が実行された場合}\n> - cross\u002F 以下: {生成・更新ファイルの一覧}\n> {Step UC が実行された場合}\n> - system\u002Fuse-cases\u002F 以下: {生成・更新ファイルの一覧}\n>\n> {Step REV で未修正の指摘がある場合}\n> **AIレビューの未修正指摘:**\n> {指摘内容の概要}\n>\n> ⚠️ **並行 CR がある場合は xddp-11-specs を逐次実行してください**（overview 共有ファイルの同時更新リスク）。\n>\n> {BRIEF_SUMMARY が取得できている場合のみ挿入}\n> ? レビューブリーフを生成しました: {BRIEF_SUMMARY.brief_path}\n> ⚠️ 重点確認箇所トップN:\n> {BRIEF_SUMMARY.top の各件について} - {file}: {marker_type}（{location}）\n> 推奨レビュー時間の目安: 約 {BRIEF_SUMMARY.est_total_min} 分\n>\n> 問題なければ「**確認完了**」と入力してください。修正が必要な場合は直接ファイルを編集してください。\n> 複数ファイルにまたがる大きな修正を加えた場合は、確認完了の前に\n> `\u002Fxddp-review {CR} spec {対象ファイル}` で単体 AI レビューを実施することを推奨します\n> （ファイルごとに実行）。\n\n{`UC_PENDING`（Step UC が実行された場合）と `MOD_PENDING[{repo}]`（各 repo について）の内容を集約して提示する:}\n\n{UC_PENDING の廃止候補が空でない場合}\n> ⚠️ 以下のユースケースは現在の CRS に対応する UR が見つかりません（廃止候補）。\n> 削除しますか？ [削除する \u002F 保持する]\n> {UC_PENDING の廃止候補一覧}\n\n{MOD_PENDING[{repo}] の廃止候補が空でない repo がある場合}\n> ⚠️ 以下のモジュールは今回 CR の specout 対象に含まれていません（廃止候補）。\n> 削除・統合されたモジュールであれば削除してください。\n> {repo ごとの MOD_PENDING[{repo}] 廃止候補一覧}\n\n{UC_PENDING の related-modules 照合不能ユースケースが空でない場合}\n> ⚠️ 以下のユースケースの `related-modules:` が空リストです。関連モジュールを手動で設定してください:\n> {UC_PENDING の related-modules 照合不能ユースケース一覧}\n\n{UC_PENDING の命名衝突・重複記述が空でない場合}\n> ⚠️ 以下のユースケースで命名衝突・重複記述が検出されました。確認してください:\n> {UC_PENDING の命名衝突・重複記述一覧}\n\n{MOD_PENDING[{repo}] のケバブ名衝突・SPO照合不能モジュールが空でない repo がある場合}\n> ⚠️ 以下のモジュールでケバブ名衝突または SPO 照合不能が検出されました。確認してください:\n> {repo ごとの MOD_PENDING[{repo}] ケバブ名衝突・SPO照合不能モジュール一覧}\n\n{MOD_PENDING[{repo}] のリネーム候補が空でない repo がある場合}\n> ? 以下のモジュールにリネーム候補があります。新ケバブ名にコピーしますか？ [コピーする \u002F 何もしない]\n> {repo ごとの MOD_PENDING[{repo}] リネーム候補一覧}\n\nWait for the user to confirm.\n\n`CHANGED` の判定: Run via Bash:\n`PY=$(command -v python3 || command -v python) && \"$PY\" ~\u002F.claude\u002Fskills\u002Fxddp-common\u002Fscripts\u002Fxddp_gate_snapshot.py diff --snapshot {CR_PATH}\u002F.gate-snapshot.json`\n（`diff` に `--extra-file` を再指定する必要はない——snapshot 時に保存した `extra_files` 一覧を\nJSON から読み出して自動的に再スキャンする。）\n出力 JSON の `changed`（true\u002Ffalse）を `CHANGED` として採用する（`changed_files` は\n現時点ではバッチ単位フィルタに使用しない——今回実行した全バッチを再レビュー対象とする\n粗粒度な方針を採る。05.arch\u002F06.design 等の既存 `If CHANGED:` も repo 単位の粗粒度であり、\n本件固有の後退ではない。`changed_files` を用いたバッチ単位フィルタへの絞り込みは、\n効果とコストが未検証のため本プランのスコープ外とし、改善余地として本節にコメントを残す）。\n\n会話的フォールバック: `## Human Review Gate`（共通節）の Step 4 と同様、ユーザーの発言が具体的な\n修正内容に言及しているにもかかわらず `CHANGED = false` の場合のみ、「ファイルを変更しましたか？」と\n確認してから判定を上書きする。`xddp-11-specs` は `--extra-file`（`EXTRA_FILES`）が「今回レビューされた\n`BATCH_TARGET_FILES_MAP` 内のファイルのみ」に意図的に限定されている（並行 CR の誤検知回避のため）ため、\nそれ以外の `latest-specs\u002F` 配下ファイル（例: 今回の specout 対象外の既存モジュール、または新規作成した\nファイル）の直接編集は `--root {CR_PATH}` にも `--extra-file` にも捕捉されない。この会話的フォールバックは、\nその捕捉漏れに対する最後の安全網として他の3スキル以上に重要となる。\n\nIf `CHANGED`:\n  For each バッチ番号 `{N}` in `BATCH_TARGET_FILES_MAP`（Step REV で実行されたバッチのみ。\n  スキップされたバッチは `BATCH_TARGET_FILES_MAP` に存在しないため自動的に対象外）:\n    Read `~\u002F.claude\u002Fskills\u002Fxddp-common\u002Fprocedures\u002Ffinal-review-pass.md`, apply \"## Final Review Pass\" with:\n      DOCUMENT_TYPE: SPEC, TARGET_FILES: {BATCH_TARGET_FILES_MAP[N]},\n      REFERENCE_FILES: {BATCH_REFERENCE_FILES_MAP[N]},\n      REVIEW_ROUND: (BATCH_LAST_ROUND_MAP[N] + 1),\n      OUTPUT_FILE: {CR_PATH}\u002Freview\u002F11_specs-batch{N}-review.md\n  （Fixer は呼ばない。指摘が残る場合は人に判断を委ねる——他スキルの `If CHANGED:` と同一方針）\n\nユーザーの選択（削除する\u002F保持する・コピーする\u002F何もしない）に応じて、オーケストレーターが\nディレクトリ削除・リネームコピーをファイル操作として直接実行する（エージェントは再呼び出ししない）。\n保持を選択した場合は当該ファイルのフロントマターに `status: orphaned`（UC）または `status: unverified`（MOD）を追記する。\n\n---\n\n## Step DONE: Update progress.md, Report\n\n**分割実行継続マーカーの管理:**\n分割実行（Step UC 部分完了・Step MOD 分割等）を選択した場合、progress.md §15 に以下を追記する:\n```markdown\n## 工程11 分割実行メモ\n\u003C!-- xddp-11-specs が記録。次回実行時に継続対象を特定するために使用する -->\n- 完了済みステップ: {完了したステップ名一覧（例: UC, OV, CROSS）}\n- 未処理リポジトリ: {未処理リポジトリ名一覧}  （選択肢 A の場合）\n- 処理済みモジュール: {処理済みモジュール名一覧} in {repo}  （選択肢 B の場合）\n- 処理済みUR: {処理済みURケバブ名一覧}  （Step UC が部分完了の場合）\n- 未処理UR: {未処理URケバブ名一覧}  （Step UC が部分完了の場合）\n```\n全体完了後にマーカーセクションを削除する。\n\n分割実行を選択した場合（このタイミングで「## 工程11 分割実行メモ」を書き込んだ場合）に限り、まず以下を算出する:\nLet `未処理ステップ一覧` = 全体ステップ一覧（UC・OV・MOD。`IS_MULTI` の場合のみ CROSS も含む）から `完了済みステップ` を除いたもの。\n（この算出式が正本であり、xddp-status 側の同名表示はこの式と同一のものを用いる。定義を2箇所に重複させず、`xddp-status` 側は progress.md に書き込まれた `完了済みステップ:` の値から都度同じ式で再計算する。）\n\nStep 11 のステータスと `次に実行すべきコマンド` フィールドは、分割実行を選択したか・全体完了したかで以下のように分岐して設定する（`次に実行すべきコマンド` は他工程（`xddp-01-init\u002FSKILL.md`、`xddp-04-specout\u002FSKILL.md`）と同じ「裸コマンド1行」形式に統一する）:\n- **分割実行を選択した場合**:\n  Read `~\u002F.claude\u002Fskills\u002Fxddp-common\u002FSKILL.md`, apply \"## Progress Update\" with:\n    CR_PATH: {CR_PATH}, STEP_NUM: 11, STATE: ? 進行中, DETAIL_STEP: `Step DONE: 分割実行中（未処理: {未処理ステップ一覧}）`\n  Set \"次に実行すべきコマンド\" → `\u002Fxddp-11-specs {CR}`\n- **全体完了の場合**（分割実行マーカーを書き込まない、または既存マーカーを削除した場合）:\n  Read `~\u002F.claude\u002Fskills\u002Fxddp-common\u002FSKILL.md`, apply \"## Progress Update\" with:\n    CR_PATH: {CR_PATH}, STEP_NUM: 11, STATE: ✅ 完了, DETAIL_STEP: `-`,\n    ARTIFACT_LINK: `[latest-specs\u002F](..\u002Flatest-specs\u002F)`\n  Set \"次に実行すべきコマンド\" → `\u002Fxddp-close {CR}`\n\n**更新ファイル一覧の記録（progress.md §15）:**\n新構造では 1モジュール = 複数ファイルになるため、全ファイルパスを列挙する。\n\n**system\u002F ファイルの記録確認（必須チェック）:**\nStep UC が実行された場合（`{XDDP_DIR}\u002Flatest-specs\u002Fsystem\u002Fuse-cases\u002F` が存在する場合）:\n  Enumerate all `.md` files under `{XDDP_DIR}\u002Flatest-specs\u002Fsystem\u002Fuse-cases\u002F`.\n  For each file, verify it appears in the \"## 工程11 更新仕様書ファイル一覧\" section.\n  If any `system\u002Fuse-cases\u002F**\u002F*.md` file is missing from the list → add it before writing the section.\n  （xddp-close Step C0-3 の保護判定はこのリストに依存しており、記録漏れがあると\n   C0-3 で `{DOCS}\u002Fsystem\u002Fspecs\u002F` から旧バージョンファイルが上書きコピーされるリスクがある）\n\n````markdown\n## 工程11 更新仕様書ファイル一覧\n\n\u003C!-- xddp-11-specs が自動記録。xddp-close Step C0-3 で保護対象判定に使用する。 -->\n\n- latest-specs\u002F{repo}\u002Foverview\u002Farchitecture.md\n- latest-specs\u002F{repo}\u002F{module}\u002Fspec.md\n- latest-specs\u002F{repo}\u002F{module}\u002Fstructure.md\n- latest-specs\u002F{repo}\u002F{module}\u002Fsequences\u002Fmain-seq.md\n- latest-specs\u002Fcross\u002Finterfaces\u002F{interface-kebab}\u002Fspec.md\n- latest-specs\u002Fcross\u002Finterfaces\u002F{interface-kebab}\u002Fschema.md\n- latest-specs\u002Fcross\u002Fsequences\u002F{flow}-seq.md\n- latest-specs\u002Fsystem\u002Fuse-cases\u002F{usecase}\u002Fdescription.md\n- latest-specs\u002Fsystem\u002Fuse-cases\u002F{usecase}\u002Fsequences\u002F{scenario}-seq.md\n````\n\n(Overwrite the section if it already exists.)\n\nStep DONE 末尾の `Tell the user` ブロックも同じ分岐条件で出し分ける（`未処理ステップ一覧` は上で算出済みの値をそのまま使う）:\n\n- **分割実行を選択した場合:**\n  Tell the user:\n  > ? 工程11（最新仕様書作成）の一部が完了しました（未処理: {未処理ステップ一覧}）。\n  > 続けて以下のコマンドを再実行すると、未処理分のみ処理します:\n  > ```\n  > \u002Fxddp-11-specs {CR}\n  > ```\n  > 進捗確認は `\u002Fxddp-status {CR}` でも確認できます。\n\n- **全体完了の場合:**\n  Tell the user:\n  > 工程11が完了しました。続いて CR クローズ処理（気づき集約・知見ログ更新）を実行してください。\n  > ```\n  > \u002Fxddp-close {CR}\n  > ```\n  >\n  > ⚠️ **知識参照 degraded mode**: xddp-close 未実施のため `{DOCS}` への昇格が未完了です。\n  > 次の CR の工程2 は、`{DOCS}` に無い最新仕様を `latest-specs\u002F` から読みます（degraded）。\n  > xddp-close を実施してから次の CR を開始することを推奨します。\n  >\n  > 並行 CR が存在する場合は xddp-11-specs を逐次実行してください（overview 共有ファイルの同時更新リスク）。\n",{},"main","c15454fe190ba8cf0d4fe93871d77bf4e8dffabf","ClaudeCode\u002F.claude\u002Fskills\u002Fxddp-11-specs",0,"https:\u002F\u002Fgithub.com\u002Ftsuna44\u002FXddpSettings","https:\u002F\u002Fgithub.com\u002Ftsuna44","2026-11-08 08:45:39",{"source":7,"skillName":5,"commands":31,"prompt":41,"zipAvailable":42},[32,35,38],{"tool":33,"command":34},"npx","npx skills add tsuna44\u002FXddpSettings --skill xddp-11-specs",{"tool":36,"command":37},"bunx","bunx skills add tsuna44\u002FXddpSettings --skill xddp-11-specs",{"tool":39,"command":40},"pnpm","pnpm dlx skills add tsuna44\u002FXddpSettings --skill xddp-11-specs","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ftsuna44\u002FXddpSettings\u002Fblob\u002Fmain\u002FClaudeCode\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002FSKILL.md",true,[44,50,54,60,64,68,72,76,80,84,88,92,96,100,104,108,112],{"path":45,"resourceType":46,"resourceTypeDesc":47,"sizeBytes":48,"sourceHtmlUrl":49},"scripts\u002Fspec_version_delta.py","SCRIPT","脚本",17581,"https:\u002F\u002Fgithub.com\u002Ftsuna44\u002FXddpSettings\u002Fblob\u002Fmain\u002FClaudeCode\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Fscripts\u002Fspec_version_delta.py",{"path":51,"resourceType":46,"resourceTypeDesc":47,"sizeBytes":52,"sourceHtmlUrl":53},"scripts\u002Ftests\u002Ftest_spec_version_delta.py",9620,"https:\u002F\u002Fgithub.com\u002Ftsuna44\u002FXddpSettings\u002Fblob\u002Fmain\u002FClaudeCode\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Fscripts\u002Ftests\u002Ftest_spec_version_delta.py",{"path":55,"resourceType":56,"resourceTypeDesc":57,"sizeBytes":58,"sourceHtmlUrl":59},"templates\u002F11_cross-interface-schema-template.md","REFERENCE","参考文档",2357,"https:\u002F\u002Fgithub.com\u002Ftsuna44\u002FXddpSettings\u002Fblob\u002Fmain\u002FClaudeCode\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_cross-interface-schema-template.md",{"path":61,"resourceType":56,"resourceTypeDesc":57,"sizeBytes":62,"sourceHtmlUrl":63},"templates\u002F11_cross-interface-spec-template.md",3478,"https:\u002F\u002Fgithub.com\u002Ftsuna44\u002FXddpSettings\u002Fblob\u002Fmain\u002FClaudeCode\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_cross-interface-spec-template.md",{"path":65,"resourceType":56,"resourceTypeDesc":57,"sizeBytes":66,"sourceHtmlUrl":67},"templates\u002F11_cross-sequence-template.md",1499,"https:\u002F\u002Fgithub.com\u002Ftsuna44\u002FXddpSettings\u002Fblob\u002Fmain\u002FClaudeCode\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_cross-sequence-template.md",{"path":69,"resourceType":56,"resourceTypeDesc":57,"sizeBytes":70,"sourceHtmlUrl":71},"templates\u002F11_module-sequence-template.md",1847,"https:\u002F\u002Fgithub.com\u002Ftsuna44\u002FXddpSettings\u002Fblob\u002Fmain\u002FClaudeCode\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_module-sequence-template.md",{"path":73,"resourceType":56,"resourceTypeDesc":57,"sizeBytes":74,"sourceHtmlUrl":75},"templates\u002F11_module-spec-template.md",2877,"https:\u002F\u002Fgithub.com\u002Ftsuna44\u002FXddpSettings\u002Fblob\u002Fmain\u002FClaudeCode\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_module-spec-template.md",{"path":77,"resourceType":56,"resourceTypeDesc":57,"sizeBytes":78,"sourceHtmlUrl":79},"templates\u002F11_module-state-machine-template.md",2066,"https:\u002F\u002Fgithub.com\u002Ftsuna44\u002FXddpSettings\u002Fblob\u002Fmain\u002FClaudeCode\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_module-state-machine-template.md",{"path":81,"resourceType":56,"resourceTypeDesc":57,"sizeBytes":82,"sourceHtmlUrl":83},"templates\u002F11_module-structure-template.md",2094,"https:\u002F\u002Fgithub.com\u002Ftsuna44\u002FXddpSettings\u002Fblob\u002Fmain\u002FClaudeCode\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_module-structure-template.md",{"path":85,"resourceType":56,"resourceTypeDesc":57,"sizeBytes":86,"sourceHtmlUrl":87},"templates\u002F11_overview-architecture-template.md",2375,"https:\u002F\u002Fgithub.com\u002Ftsuna44\u002FXddpSettings\u002Fblob\u002Fmain\u002FClaudeCode\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_overview-architecture-template.md",{"path":89,"resourceType":56,"resourceTypeDesc":57,"sizeBytes":90,"sourceHtmlUrl":91},"templates\u002F11_overview-crud-template.md",2219,"https:\u002F\u002Fgithub.com\u002Ftsuna44\u002FXddpSettings\u002Fblob\u002Fmain\u002FClaudeCode\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_overview-crud-template.md",{"path":93,"resourceType":56,"resourceTypeDesc":57,"sizeBytes":94,"sourceHtmlUrl":95},"templates\u002F11_overview-data-model-template.md",2462,"https:\u002F\u002Fgithub.com\u002Ftsuna44\u002FXddpSettings\u002Fblob\u002Fmain\u002FClaudeCode\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_overview-data-model-template.md",{"path":97,"resourceType":56,"resourceTypeDesc":57,"sizeBytes":98,"sourceHtmlUrl":99},"templates\u002F11_overview-deployment-template.md",3146,"https:\u002F\u002Fgithub.com\u002Ftsuna44\u002FXddpSettings\u002Fblob\u002Fmain\u002FClaudeCode\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_overview-deployment-template.md",{"path":101,"resourceType":56,"resourceTypeDesc":57,"sizeBytes":102,"sourceHtmlUrl":103},"templates\u002F11_overview-dfd-template.md",1694,"https:\u002F\u002Fgithub.com\u002Ftsuna44\u002FXddpSettings\u002Fblob\u002Fmain\u002FClaudeCode\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_overview-dfd-template.md",{"path":105,"resourceType":56,"resourceTypeDesc":57,"sizeBytes":106,"sourceHtmlUrl":107},"templates\u002F11_overview-sequence-template.md",1894,"https:\u002F\u002Fgithub.com\u002Ftsuna44\u002FXddpSettings\u002Fblob\u002Fmain\u002FClaudeCode\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_overview-sequence-template.md",{"path":109,"resourceType":56,"resourceTypeDesc":57,"sizeBytes":110,"sourceHtmlUrl":111},"templates\u002F11_system-use-case-description-template.md",2548,"https:\u002F\u002Fgithub.com\u002Ftsuna44\u002FXddpSettings\u002Fblob\u002Fmain\u002FClaudeCode\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_system-use-case-description-template.md",{"path":113,"resourceType":56,"resourceTypeDesc":57,"sizeBytes":114,"sourceHtmlUrl":115},"templates\u002F11_system-use-case-sequence-template.md",2539,"https:\u002F\u002Fgithub.com\u002Ftsuna44\u002FXddpSettings\u002Fblob\u002Fmain\u002FClaudeCode\u002F.claude\u002Fskills\u002Fxddp-11-specs\u002Ftemplates\u002F11_system-use-case-sequence-template.md",[117,130,137,145,152,174],{"skillNo":118,"name":119,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":127,"publishedAt":18},"01M6MDVNN0ZX8D5KABK9G0067Z","demo.skill","https:\u002F\u002Fgithub.com\u002Ftsuna44\u002FXddpSettings\u002Fblob\u002Fmain\u002Ftools\u002Fharness\u002Ftests\u002Ffixtures\u002Fbadrepo\u002FClaudeCode\u002F.claude\u002Fskills\u002Fdemo.skill\u002FSKILL.md",[122],{"categoryNo":123,"categoryName":124,"taxonomyType":125,"taxonomyTypeDesc":126},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[128,129],"demo skill","demo",{"skillNo":131,"name":132,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":135,"publishedAt":18},"01M6MDVK20HAJYBMXM7VX50A3J","demo.noname","https:\u002F\u002Fgithub.com\u002Ftsuna44\u002FXddpSettings\u002Fblob\u002Fmain\u002Ftools\u002Fharness\u002Ftests\u002Ffixtures\u002Fbadrepo\u002FClaudeCode\u002F.claude\u002Fskills\u002Fdemo.noname\u002FSKILL.md",[],[136,129],"demo noname",{"skillNo":138,"name":139,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":142,"publishedAt":18},"01M6MDVFS20532JT4V7WT779XH","demo.common","https:\u002F\u002Fgithub.com\u002Ftsuna44\u002FXddpSettings\u002Fblob\u002Fmain\u002Ftools\u002Fharness\u002Ftests\u002Ffixtures\u002Fbadrepo\u002FClaudeCode\u002F.claude\u002Fskills\u002Fdemo.common\u002FSKILL.md",[],[143,144,129],"demo common","common",{"skillNo":146,"name":147,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":150,"publishedAt":18},"01M6MDVCV2JFN66NJTFG1CCJS1","demo.badname","https:\u002F\u002Fgithub.com\u002Ftsuna44\u002FXddpSettings\u002Fblob\u002Fmain\u002Ftools\u002Fharness\u002Ftests\u002Ffixtures\u002Fbadrepo\u002FClaudeCode\u002F.claude\u002Fskills\u002Fdemo.badname\u002FSKILL.md",[],[151,129],"demo badname",{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":161,"publishedAt":18},"01M6MDV7CHGZGPXR0MQ44VC4C1","xddp-update-knowledge","任意のタイミングで baseline_docs\u002F の knowledge ディレクトリに知識を追加・更新する。CR 非依存。対話形式と引数形式に対応。「知識を登録して」「callgraph を記録して」「メモを保存して」などで起動する。","https:\u002F\u002Fgithub.com\u002Ftsuna44\u002FXddpSettings\u002Fblob\u002Fmain\u002FClaudeCode\u002F.claude\u002Fskills\u002Fxddp-update-knowledge\u002FSKILL.md",[158],{"categoryNo":159,"categoryName":160,"taxonomyType":125,"taxonomyTypeDesc":126},"01JBSEEDCAT000000000000021","资料检索与研究",[162,163,164,165,166,167,168,169,170,171,172,173],"xddp update knowledge","update knowledge","knowledge","update","note","structure","constraint","lesson","glossary","baseline","flow","docs",{"skillNo":175,"name":176,"nameZh":6,"description":177,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":178,"categories":179,"keywords":188,"publishedAt":18},"01M6MDV2Q1Z02WAN4CZ2WVFZ27","xddp-sync-design","コードから DSN を再生成してリビジョンとして記録し、AIレビュー→人承認を実施する。「設計を同期して」「DSN を更新して」などで起動する。","https:\u002F\u002Fgithub.com\u002Ftsuna44\u002FXddpSettings\u002Fblob\u002Fmain\u002FClaudeCode\u002F.claude\u002Fskills\u002Fxddp-sync-design\u002FSKILL.md",[180,183],{"categoryNo":181,"categoryName":182,"taxonomyType":125,"taxonomyTypeDesc":126},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":184,"categoryName":185,"taxonomyType":186,"taxonomyTypeDesc":187},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[189,190,191,192],"sync","xddp sync design","design","生成"]