背景
PR #36 (feat(automation): auto-sync listings from NN-slug/index.html) で、README の ## 何が読めるか 章テーブルおよび sitemap.xml / llms.txt / index.html の各章 listing が、scripts/sync_listings.py により 各章 NN-slug/index.html の meta を真実源として自動同期 される仕組みが整った。
一方、PR #35 で追加された ## 読み進め方(推奨ルート) セクション (ルート A/B/C)は依然として章ファイル名がハードコードされており、章の追加・リネーム・削除のたびに README を手で直す必要がある。
旧 Issue #37 では別系統の data/reading-routes.json + build.py 拡張案を計画したが、PR #36 の sync_listings.py 方針と真実源が分裂するため撤回した(Issue #37 のクローズコメント参照 )。本 Issue はその後継として、sync_listings.py の仕組みに乗る形 で読み進めガイドを動的化する。
目的
## 読み進め方(推奨ルート) セクション(ルート A/B/C)を、章ファイルの変化に追従できる構造に変える。sync_listings.py の既存パターン(AUTOGEN マーカー + --check / --write)に統合する。
スコープ
in scope
## 読み進め方(推奨ルート) セクションのルート A/B/C 部分を AUTOGEN 区間化
ルート定義の正本ファイル(例: data/reading-routes.json)を新設
ルート定義(id / label / duration_min / audience / goal / chapters[] / extras[])のみ
章メタ(title / slides)は sync_listings.py が既に index.html から抽出している ものを再利用
scripts/sync_listings.py にルート再生成ロジックを追加
既存 --check / --write モードに統合(CI / bot は既存ワークフローを再利用)
out of scope
### 読み方のスタイル(3 パターン) セクション — 章非依存なので静的のまま
### どのルートでも共通の前提 — 章非依存
章メタを各章ディレクトリ側に分散する案 — 既存方針(index.html 抽出)に従う
所要時間表記の「読む / 手を動かす」分離 — 別 Issue 候補(Codex レビュー指摘 _archive ディレクトリを削除 #3 )
設計方針(叩き台)
ルート定義は JSON(YAML だと依存追加が必要、sync_listings.py は標準ライブラリのみ前提)
マーカー形式は既存と統一: <!-- listings:auto:reading-routes:start --> / :end -->
章 ID は sync_listings.py の find_lectures()(または同等関数)の戻り値 と突合し、未宣言・実在しない章は --check で fail
ルート note 内に {slides} プレースホルダを許可し、章のスライド数(既に index.html から抽出済み)で埋める
詳細設計は Plan モードで詰める。
受け入れ条件
関連
背景
PR #36 (
feat(automation): auto-sync listings from NN-slug/index.html) で、README の## 何が読めるか章テーブルおよびsitemap.xml/llms.txt/index.htmlの各章 listing が、scripts/sync_listings.pyにより 各章NN-slug/index.htmlの meta を真実源として自動同期 される仕組みが整った。一方、PR #35 で追加された
## 読み進め方(推奨ルート)セクション(ルート A/B/C)は依然として章ファイル名がハードコードされており、章の追加・リネーム・削除のたびに README を手で直す必要がある。旧 Issue #37 では別系統の
data/reading-routes.json+build.py拡張案を計画したが、PR #36 のsync_listings.py方針と真実源が分裂するため撤回した(Issue #37 のクローズコメント参照)。本 Issue はその後継として、sync_listings.pyの仕組みに乗る形 で読み進めガイドを動的化する。目的
## 読み進め方(推奨ルート)セクション(ルート A/B/C)を、章ファイルの変化に追従できる構造に変える。sync_listings.pyの既存パターン(AUTOGEN マーカー +--check/--write)に統合する。スコープ
in scope
## 読み進め方(推奨ルート)セクションのルート A/B/C 部分を AUTOGEN 区間化data/reading-routes.json)を新設sync_listings.pyが既に index.html から抽出している ものを再利用scripts/sync_listings.pyにルート再生成ロジックを追加--check/--writeモードに統合(CI / bot は既存ワークフローを再利用)out of scope
### 読み方のスタイル(3 パターン)セクション — 章非依存なので静的のまま### どのルートでも共通の前提— 章非依存index.html抽出)に従う設計方針(叩き台)
sync_listings.pyは標準ライブラリのみ前提)<!-- listings:auto:reading-routes:start -->/:end -->sync_listings.pyのfind_lectures()(または同等関数)の戻り値 と突合し、未宣言・実在しない章は--checkで fail{slides}プレースホルダを許可し、章のスライド数(既に index.html から抽出済み)で埋める詳細設計は Plan モードで詰める。
受け入れ条件
data/reading-routes.json(仮)を編集 →python scripts/sync_listings.py --writeで README の該当区間が更新される--checkが exit 1sync-listings-check.yml)で drift を検出可能sync-listings-bot.yml)が再生成して auto-commit する関連