コード変更を分析して /docs/wiki/ 配下の Wiki ドキュメント(Markdown)を自動更新する。gh-finish から自動で呼ばれるほか、単独でも使用可能。
コード変更を分析し、/docs/wiki/ 配下の Markdown ファイルを自動更新する。
.wiki.git)に直接 push しないこと(GitHub Actions が同期する)/docs/wiki/ 以外のファイルを変更しないこと/smart-commit)の処理を自分で再実装しないことgit remote -v
owner/repo を特定する。
重要: このステップではブランチ全体の変更を検出する。
git diff(作業ツリーの未コミット変更)とは異なり、 はコミット済みの変更も含むブランチ上の全差分を表示する。gh-finish 等で既にコミット・プッシュ済みでも、ブランチ差分は存在する。
git diff origin/main...HEADデフォルトブランチを取得:
git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@'
リモートの最新情報を取得(ブランチ差分を正確に検出するため):
git fetch origin <default-branch>
ブランチ上のコミット一覧を確認:
git log origin/<default-branch>..HEAD --oneline
デフォルトブランチとの diff を取得:
git diff origin/<default-branch>...HEAD --name-only
git diff origin/<default-branch>...HEAD
変更されたファイルの一覧と内容を把握する。
git logでコミットが表示されるのにgit diffが空の場合は、リベースやマージの影響の可能性がある。その場合はgit diff origin/<default-branch>..HEAD(ドット2つ)も試すこと。
/docs/wiki/ の現状確認/docs/wiki/ が存在するか確認する。
/gh-init-wiki を呼び出して初期セットアップを実行。完了後、ステップ 4 へ続行するWrite ツールで /docs/wiki/ 内の Markdown ファイルを更新する。
_Sidebar.md を自動再生成(全ページへのリンク一覧)変更内容に基づいて、docs/wiki/images/ 配下のダイアグラムを作成・更新する。
docs/wiki/images/ 内の既存 .drawio ファイルを一覧する:
ls docs/wiki/images/*.drawio 2>/dev/null
既存ファイルがある場合は Read ツールで内容を読み込み、現在のダイアグラム構成を把握する。
ステップ 2 の変更内容と 6.5.1 の既存ダイアグラムを照合し、以下を判定する:
| 判定 | 条件 | アクション |
|---|---|---|
| 既存を編集 | 変更がダイアグラム内のノード・エッジに影響する(モジュール名変更、フロー変更、接続先変更等) | 6.5.3 へ |
| 新規作成 | 新しいコンポーネント/モジュール/フローが追加され、既存ダイアグラムでカバーされない | 6.5.4 へ |
| 不要 | 変更がダイアグラムに影響しない | ステップ 7 へスキップ |
.drawio ファイルの編集Read ツールで対象の .drawio ファイルを読み込み、変更内容に合わせて Edit ツールまたは Write ツールで XML を更新する。
編集の例:
<mxCell> 要素を <root> 内に追加<mxCell> の value 属性を更新<mxCell> とそれに接続するエッジを削除<mxCell> の source / target 属性を更新style 属性を更新既存ノードの
idと座標(<mxGeometry>)は変更が必要な箇所のみ修正し、他は維持する。
→ 6.5.5 へ進む。
.drawio ファイル作成docs/wiki/images/ ディレクトリが存在しない場合は作成する:
mkdir -p docs/wiki/images
Write ツールで .drawio XML ファイルを作成する。ダイアグラムの種類はプロジェクトに応じて自動判定する:
| ダイアグラム例 | ファイル名 | 用途 |
|---|---|---|
| アーキテクチャ図 | architecture.drawio | システム全体構成 |
| フロー図 | flow-*.drawio | 処理フロー |
| モジュール構成図 | modules.drawio | モジュール間の関係 |
.drawio ファイルは draw.io XML 形式で記述する。テンプレート:
<?xml version="1.0" encoding="UTF-8"?>
<mxfile>
<diagram name="ページ名">
<mxGraphModel dx="1422" dy="762" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<!-- ここにノードとエッジを配置 -->
</root>
</mxGraphModel>
</diagram>
</mxfile>
→ 6.5.5 へ進む。
作成・更新した各 .drawio ファイルを SVG にエクスポートする:
xvfb-run drawio --export --format svg --embed-svg-fonts true --output docs/wiki/images/<name>.svg docs/wiki/images/<name>.drawio
.drawio(ソース)と.svg(出力)の両方をdocs/wiki/images/に保持する。
新規ダイアグラムの場合、対応する Wiki ページに SVG 画像の参照を追加する:

既存ダイアグラムの編集の場合、SVG ファイル名が変わらなければ Markdown の参照は更新不要。
git status --short docs/wiki/
/smart-commit を呼び出してコミット更新したページの一覧を表示する。
プロジェクトを分析して最適なページ構成を自動判定する。基本構成:
| ページ | 対象読者 | 内容 | 生成ソース |
|---|---|---|---|
Home.md | 全員(非エンジニア含む) | 概要、目的、導入手順のサマリ | README.md, 設定ファイル |
Specification.md | 全員 | 仕様書: 機能一覧、全体像 | ソースコード全体 |
| 詳細設計ページ(動的) | エンジニア | 各コンポーネントの実装詳細 | 主要モジュールのソース |
_Sidebar.md | 全員 | ナビゲーション | 自動生成(全ページのリンク) |