ページ内要件文書閲覧入口(ビューアー)
目標
プロジェクト内に既に存在する要件文書をプロダクトのインターフェースに統合し、ユーザーが現在のページから直接関連説明を参照できるようにします。同時に、入口が初回表示を遅延させず、過去のコンテンツを漏洩せず、本番環境で内部文書が意図せず公開されないことを保証します。
文書作成との境界
- 本スキルは閲覧入口の実装のみを担当します:入口の位置、文書マッピング、ビルド時のコピー、レンダリング、検索、レイジーローディング、エラー状態、本番公開面、テストとレビュー。
- 文書コンテンツは
prd-rule-authoringまたは任意のソースから提供されます。本スキルは文書の書き方を規定せず、プロジェクトがprd-rule-authoringを使用する必要もありません。 - 両者は相互に依存しません:閲覧入口のないプロジェクトでも要件文書を出力すべきであり、閲覧入口があっても文書の作成ルールは変わりません。
- 唯一の結合面は「文書ディレクトリ + Markdown 規則」です:パス、見出し、レンダリング可能な構文。規則はプロジェクト設定に記述され、スキル内にハードコードされません。
使用するタイミング
- プロダクト/開発/テストチームが「現在のページで直接ルールを確認したい」場合、画面分割してMDを調べる手間を省きたい場合。
- 体系化されたMarkdown要件文書が既に存在し、読み取り専用の表示が必要な場合。
- 内部文書を納品デモに組み込む必要があるが、本番での可視性を制御しなければならない場合。
不適用:オンライン編集/コラボレーションレビュー、文書承認フロー、全文検索のサービス化、権限別閲覧(これらは後続拡張可能であり、最小実装には含まれません)。
参照順序
| ファイル | 読むタイミング |
|---|---|
references/integration-design.md | 入口/ビルド/マッピング/レイジーローディングを設計する際 |
references/rendering-and-search.md | 制限付きMDレンダリング、履歴セクションフィルタリング、検索を実装する際 |
references/acceptance-checklist.md | テスト、レビュー、受け入れ時 |
references/ops-and-governance.md | 本番公開面、文書更新とリリースプロセスを検討する際 |
最小実装リスト
- 入口:文書マッピングが存在するページにのみ表示。マッピングがない場合はレンダリングしない(死んだボタンを残さない)。入口自体は文書を一切ロードしない。
- ソース:文書ソースはリポジトリ内のMarkdown(または同等の静的ファイル)。ビルド時に成果物ディレクトリにコピー。ビルド時に成果物 ↔ マッピングの双方向検証を実施(欠落/孤立はビルド失敗とする)。
- マッピング:ルート/ページ → 文書パスのレジストリを唯一のマッピングソースとする。文書ツリーはモジュール単位でグループ化。モジュールレベルの文書は個別に識別。
- ローディング:ドロワー/パネルが開かれた後にのみ文書をリクエスト。初回オープン時に現在の文書をロード。検索インデックスはオープン後、アイドル状態で構築。起動時に文書をプリロードしてはならない。
- レンダリング:制限付きMarkdownレンダリング(見出し/段落/リスト/テーブル/コード/引用/区切り線/リンク)。すべてのHTMLをエスケープし、ホワイトリストに記載されたタグのみ出力。中国語/括弧を含むファイル名はURLエンコード。サブパスデプロイメントに適応。見出しアンカー用のスラッグはHTML/URLの危険文字(
<>&"')を安全化し、アンカー生成は単一のエントリポイントとする(目次/本文/検索/位置指定で共通)。 - リーダールール:最新の説明のみを表示——「更新履歴/更新ログ」セクション(およびその内容)はレンダリングしない。目次と検索からも同期して除外。ソース文書に過去のスナップショット注釈が含まれる場合、プロジェクトの規則に従ってフィルタリングするか、文書作成者が記述しないようにする。
- インタラクション:目次のクリックで位置指定、アクションページではデフォルトの位置をセクション単位で提示可能、グローバルキーワード検索(文書グループ別、現在のページのヒットを先頭に、スニペットからMarkdownノイズを除去)とジャンプ、エラー状態とリトライ、閉じる。検索結果のナビゲーションコンテキスト:ヒットをクリックしても本文のみが切り替わり、検索語/結果リストはクリアされない。結果領域のスクロール位置は維持。ヒット項目はハイライト(安定したキーを使用し、少なくとも文書+アンカー+見出しを含む。必要に応じてスニペットで同一セクション内の複数ヒットを区別)。「検索をクリア」の明示的なエントリを提供し、文書ツリーを復元。文書ツリーから文書を開く際には検索をクリア。インデックスは再構築しない。要注意:目次が画面上部に固定される、または展開リストが常に本文上部に存在する場合、クリック位置指定はオーバーレイ高さを考慮したオフセットで隠れを防止する必要がある。自動化テストでは隠れをアサートする(
toBeVisibleは隠れを判定しない)。固定された折りたたみ目次、スクロール補正などの高度な形態の詳細はreferences/integration-design.md§7 を参照。 - 本番公開面:入口スイッチはボタンのみを制御し、静的文書を保護しない。本番環境では次のいずれかを必須とする:ビルド時に文書ディレクトリを除外するか、文書パスに認証を追加する(本番アクセスゲートに記述)。
- テスト:マッピングの完全性、ビルド成果物の一貫性、履歴セクションが表示されないこと、レイジーローディングでプリロードが発生しないこと、検索とジャンプ、検索結果のコンテキスト維持(キーワード/結果/スクロール位置の保持、連続ヒット、クリアでツリー復元、ハイライトの一意性、インデックス非再構築)、エラー状態。目次/位置指定について隠れアサートを追加(
toBeVisibleは隠れを判定しない)。スクロール復元アサートはクランプに対して寛容であり、ピクセル単位の完全一致は要求しない。可視ブラウザでレビューし、証拠(スクリーンショットと最終的な動作の一致)をアーカイブする。
境界
- 業務ページの動作、メニュー/ルートの業務値、Mockデータを変更しない。閲覧入口と文書アセットのチェーンのみを追加する。
- サードパーティ製の重量級MDレンダリング依存関係を導入しない。レンダラーは制限付きで、テスト可能で、エスケープ可能であること。
- 「文書作成規則」を本スキルに記述しない。「入口実装の詳細」を文書作成スキルに記述しない。
- 実際の権限、本番デプロイ、認証方式はプロジェクトのゲートに従う。Mock/デモでの合格は本番での保護を意味しない。
納品説明
入口の位置と可視条件、文書ソースとマッピング、ビルド時のコピーと検証、レンダリングと履歴フィルタリング、レイジーローディングと検索、エラー状態、本番公開面の処理、テストとレビュー証拠、未カバー項目。