xddp-sync-design
コードから DSN を再生成してリビジョンとして記録し、AIレビュー→人承認を実施する。「設計を同期して」「DSN を更新して」などで起動する。
- License 许可
- MIT
- 最近更新
- 2026-11-08
- Stars
- ★ 1
- Forks
- 0
01 前言 Front Matter
- name
- xddp-sync-design
- description
- コードから DSN を再生成してリビジョンとして記録し、AIレビュー→人承認を実施する。「設計を同期して」「DSN を更新して」などで起動する。
- argument-hint
- [CR番号] [変更サマリ(省略可)]
03 SKILL.md 正文
You are orchestrating XDDP sync-design — Code-to-DSN Revision Generation.
Arguments: $ARGUMENTS = [CR_NUMBER] (optional) [, 変更サマリ(省略可)]
Read ~/.claude/skills/xddp-common/SKILL.md, apply "## CR Resolution" with $ARGUMENTS
→ let CR, REST_ARGS.
Let TODAY = today's date.
Let CHANGE_SUMMARY = REST_ARGS(空の場合は Step 2 で git diff から自動生成)
(xddp.config.md lookup done in xddp-common/SKILL.md「## CR Resolution」; reuse WORKSPACE_ROOT, XDDP_DIR,
REPOS_MAP, REPOS_KEYS.)
Let CR_PATH = {WORKSPACE_ROOT}/{XDDP_DIR}/{CR}.
Step 1: Determine revision numbers
Let CURRENT_DSN_MAP = {} (repo → 現在の最新 DSN ファイルパス)
Let NEW_DSN_FILE_MAP = {} (repo → 今回生成するリビジョンファイルパス)
Let NEXT_REV_NUM_MAP = {} (repo → 今回の rev 番号)
For each {repo} in REPOS_KEYS:
Let EXISTING_REVS = glob {CR_PATH}/05_architecture/{repo}/DSN-{CR}-rev*.md
(rev ファイルが存在しない場合は空リスト)
Let NEXT_REV_NUM_MAP[{repo}] = len(EXISTING_REVS) + 1
Let CURRENT_DSN_MAP[{repo}] =
if EXISTING_REVS is not empty: 最大番号の rev ファイル
else: {CR_PATH}/05_architecture/{repo}/DSN-{CR}.md
Let NEW_DSN_FILE_MAP[{repo}] = {CR_PATH}/05_architecture/{repo}/DSN-{CR}-rev{NEXT_REV_NUM_MAP[{repo}]}.md
Step 2: Collect code context
Run: git -C {WORKSPACE_ROOT} diff HEAD → let GIT_DIFF
(git diff HEAD は HEAD とワーキングツリーの差分を返す。git add 済みのステージング変更も未ステージングの変更も両方含む(ステージング済みのみは git diff --staged HEAD、未ステージングのみは git diff)。
コミット済みの変更を対象にする場合は git diff {base_ref}..HEAD 等が必要であり、
その場合は REST_ARGS に変更サマリと共に明示する)
If GIT_DIFF is empty:
Report: "⚠️ git diff HEAD が空です(ワーキングツリー・インデックスに HEAD 比較の差分なし)。"
Ask human: "続行しますか?コミット済みの変更を対象にする場合は
/xddp-sync-design {CR} {変更サマリ} で変更サマリを指定するか、
コミット前の状態に戻して再実行してください。"
If No: Stop.
If CHANGE_SUMMARY is empty:
Let CHANGE_SUMMARY = GIT_DIFF の変更ファイル一覧と変更行数の概要を自動生成
Let CHANGED_FILES_MAP = {} (repo → 変更ファイル一覧)
Let REPO_DIFF_MAP = {} (repo → diff 抽出)
Let CRS_FILE_MAP = {} (repo → CRS ファイルパス。存在しない場合は空文字)
Let STEERING_MAP = {} (repo → steering context)
For each {repo} in REPOS_KEYS:
Let CHANGED_FILES_MAP[{repo}] = GIT_DIFF から {REPOS_MAP[{repo}]} 配下の変更ファイル一覧
Let REPO_DIFF_MAP[{repo}] = GIT_DIFF から {REPOS_MAP[{repo}]} 配下の差分のみ抽出
Let CRS_PATH = {CR_PATH}/03_change-requirements/CRS-{CR}.md
Let CRS_FILE_MAP[{repo}] = CRS_PATH if exists, else ""
Read Steering Context(xddp-common "## Load Steering Context" with XDDP_DIR, REPO_NAME={repo})
→ let STEERING_MAP[{repo}]
Let AFFECTED_REPOS = {repo for repo in REPOS_KEYS if REPO_DIFF_MAP[{repo}] is not empty}
If AFFECTED_REPOS is empty:
Report: "⚠️ いずれのリポジトリにも差分が検出されませんでした。処理を終了します。"
Stop.
Step 3: Regenerate DSN per repo
For each {repo} in AFFECTED_REPOS:
Let CURRENT_DSN = CURRENT_DSN_MAP[{repo}]
If CURRENT_DSN does not exist:
Report error: "DSN-{CR}.md が存在しません(repo: {repo})。工程5(xddp-05-arch)を先に実施してください。"
Stop.
Let NEW_DSN_FILE = NEW_DSN_FILE_MAP[{repo}]
Let NEXT_REV_NUM = NEXT_REV_NUM_MAP[{repo}]
Agent tool subagent_type=xddp-design-sync-agent:
CR_NUMBER: {CR}
REPO_NAME: {repo}
CURRENT_DSN_FILE: {CURRENT_DSN}
CHANGED_FILES: {CHANGED_FILES_MAP[{repo}]}
REPO_DIFF: {REPO_DIFF_MAP[{repo}]}
CRS_FILE: {CRS_FILE_MAP[{repo}]}(空文字の場合は省略)
OUTPUT_FILE: {NEW_DSN_FILE}
CHANGE_SUMMARY: {CHANGE_SUMMARY}
RULEBOOK_CONTEXT: {STEERING_MAP[{repo}]}
TODAY: {TODAY}
Step 4: AI review
For each {repo} in AFFECTED_REPOS:
Let CURRENT_DSN = CURRENT_DSN_MAP[{repo}]
Let NEW_DSN_FILE = NEW_DSN_FILE_MAP[{repo}]
Let NEXT_REV_NUM = NEXT_REV_NUM_MAP[{repo}]
Let REVIEW_FILE = {CR_PATH}/05_architecture/{repo}/DSN-{CR}-rev{NEXT_REV_NUM}-review.md
Read ~/.claude/skills/xddp-common/procedures/invoke-reviewer.md, apply "## Invoke Reviewer" with:
DOCUMENT_TYPE: DSN, TARGET_FILE: {NEW_DSN_FILE},
REFERENCE_FILES: [{CURRENT_DSN}](CRS_FILE_MAP[{repo}] が非空の場合は追加),
REVIEW_ROUND: 1, OUTPUT_FILE: {REVIEW_FILE}
Step 5: Report and request approval
For each {repo} in AFFECTED_REPOS:
Let NEW_DSN_FILE = NEW_DSN_FILE_MAP[{repo}]
Let NEXT_REV_NUM = NEXT_REV_NUM_MAP[{repo}]
Let REVIEW_FILE = {CR_PATH}/05_architecture/{repo}/DSN-{CR}-rev{NEXT_REV_NUM}-review.md
Show: {repo} のレビュー結果サマリー({REVIEW_FILE} から重要度別件数を表示)
承認確認として以下の一覧を表示する:
| repo | リビジョンファイル | レビュー判定 |
|---|---|---|
(AFFECTED_REPOS ごとに {repo} / NEW_DSN_FILE_MAP[{repo}] / ?件数・?件数 を列挙) |
Ask: "上記 {len(AFFECTED_REPOS)} リポジトリの DSN リビジョンを承認しますか?"
If approved → proceed to Step 6.
If not approved:
Report: "修正後に再度 /xddp-sync-design {CR} を実行してください。"
Stop.
Step 6 (承認後): latest-specs 更新ガイダンス
以下を案内する:
✅ 以下の DSN リビジョンが承認されました:
(AFFECTED_REPOS ごとに NEW_DSN_FILE_MAP[{repo}] を列挙)
latest-specs を最新状態に更新するには、以下を実行してください:
/xddp-11-specs {CR}
(xddp-11-specs は現状コードと CHD を参照して latest-specs を生成・更新します)
⚠️ 注意: このスキルは DSN のみ更新し、CHD は更新しません。
DSN と CHD に大きな乖離がある場合、xddp-11-specs が CHD ベースで仕様を生成するため
最新 DSN と整合しない仕様書が生成されるリスクがあります。
CHD も更新が必要な場合は先に /xddp-06-design を実行してください。
保守メモ: このファイルを変更した場合は、
README.md(スキル一覧テーブル)およびCLAUDE.md(ステップ番号体系テーブル)を合わせて更新すること。
04 同仓库更多 Skills
demo.skill
暂无简介
demo.noname
暂无简介
demo.common
暂无简介
demo.badname
暂无简介
xddp-update-knowledge
任意のタイミングで baseline_docs/ の knowledge ディレクトリに知識を追加・更新する。CR 非依存。対話形式と引数形式に対応。「知識を登録して」「callgraph を記録して」「メモを保存して」などで起動する。
xddp-survey
CR 非依存で母体コードを調査し「現状仕様」を文書化する。調査後に (a) 調査のみ (b) knowledge へ昇格 (c) specs へ昇格 を人が選択する。CR を1本も回していない母体から仕様書を起こす場合に使用する。 「母体を調査して」「コードの仕様を調べて」「baseline を起こして」などで起動する。