# Static report site `shrk report site` generates a folder of static HTML files summarizing the current SharkCraft state. **No server is started**, no network I/O, no JS required to view — every page is plain HTML with inline CSS. The output is designed to be uploaded as a CI artifact and reviewed offline. ```bash shrk report site # writes to .sharkcraft/reports/site shrk report site --output /tmp/sharkcraft-report-site shrk report site --bundle # embed the v3 packet for one bundle shrk report site --review review-packet.json # embed a saved packet shrk report site --impact /tmp/impact.json # embed one impact report (R12) shrk report site --impact-dir .sharkcraft/reports/impact # embed every *.json in a dir (R12) shrk report site --manifest # JSON inventory of generated pages shrk report site --json # list generated files as JSON ``` Generated pages: - `index.html` — overview / headline metrics + deep-link list - `quality.html` — quality gate matrix + baseline link - `quality-baseline.html` — full baseline detail (only if a baseline exists) - `bundles.html` — bundle list + per-bundle validation pages - `bundle-.html` — last-run bundle validation report - `review.html` — v3 review packet (placeholder until `--bundle` / `--review` supplied) - `impact.html` — index of impact reports (placeholder until `--impact` / `--impact-dir` supplied; R12) - `impact-.html` — per-impact-report detail page (R12) - `coverage.html` — coverage breakdown - `drift.html` — drift findings table - `policies.html` — policy registrations + findings - `area-map.html` — repository area map (R12) - `constructs.html` — registered constructs (placeholder when none) (R12) The site reuses the same HTML renderers as `shrk bundle validate --html` and `shrk review render-comment --format html`, so the look-and-feel is consistent. ## R11 — placeholders + manifest If `review.html` would otherwise be empty, the site now writes an explicit placeholder explaining how to populate the page (with `--bundle` or `--review`). `shrk report site --manifest` emits a JSON `IReportSiteManifest`: ```jsonc { "schema": "sharkcraft.report-site-manifest/v1", "outputDir": "...", "generatedAt": "...", "pages": [ { "id": "review", "file": "review.html", "title": "Review", "kind": "placeholder", // "page" | "placeholder" "populated": false } // ... ], "notes": [ "review.html is a placeholder — re-run with --bundle or --review to populate.", "impact.html is a placeholder — re-run with --impact or --impact-dir to populate." ] } ``` MCP: `get_report_site_preview` returns a similar structured map without touching the filesystem. ## Deep links & impact (R12) `shrk report site` now renders extra pages: - `impact.html` — index of impact reports (or a placeholder with the command to generate one). Pass `--impact ` or `--impact-dir ` to embed reports; each becomes `impact-1.html`, `impact-2.html`, etc. - `area-map.html` — full repository area map (kinds, files, paths, boundary rules, risk scores). - `constructs.html` — registered constructs with file lists and public-API links (or a placeholder pointing to `constructs.ts` / `constructs infer`). The shared nav links every page from every page (including the current one, marked bold). Review and impact pages cross-link the area map and each other. ## Polish (R13) Every page in the site now ships with: - A shared top nav that highlights the current page. - A short page description and a "Helpful commands" sidebar. - Explicit empty-state cards on pages with no content yet (review / impact / constructs). - A `Generated by SharkCraft · ` footer linking back to the index. The polish is pure HTML/CSS — no JavaScript, no external assets, still no server. ## Impact graph artifacts (R14) ```bash shrk report site --impact .sharkcraft/reports/impact.json --with-impact-graphs ``` When this flag is set, every embedded impact detail page (`impact-1.html`, `impact-2.html`, …) also gets: - a `impact-.mmd` and `impact-.dot` artifact written next to it; - the Mermaid + DOT source inlined into the page (collapsed `
` blocks) so reviewers can copy / download without a renderer; - a manifest note recording the artifact count. There is **no** JavaScript, no remote fetch, no automatic SVG conversion unless the human runs `mmdc` / `dot` themselves. The page degrades gracefully — if the renderer isn't installed, you still see the source. ## Title, brand, and optional SVG (R15) ```bash shrk report site \ --output /tmp/sharkcraft-site \ --title "SharkCraft demo report" \ --brand "SharkCraft" \ --with-impact-graphs --render-impact-graphs \ --safety-matrix docs/command-safety-matrix.md \ --runtime-compat .sharkcraft/reports/compat-node.html ``` R15 adds optional polish to the report site: - `--title ` adds a banner at the top of every page. - `--brand ` adds a brand label on the left of the nav and replaces the page-title prefix in the `` tag. - `--safety-matrix <url>` and `--runtime-compat <url>` add deep-link nav entries. - `--render-impact-graphs` (paired with `--with-impact-graphs`) tries to render Mermaid / DOT graphs to SVG via `mmdc` / `dot` if those binaries are on PATH. Always best-effort: if the renderer is missing or fails, the source-only behaviour is preserved and the diagnostic ends up in `impactRenderDiagnostics`. Every R15 addition is HTML/CSS-only — no JavaScript, no external assets, no server. ## What it is **not** - Not a web app. There is no `<script>` tag, no API call, no server. - Not a dashboard. The dashboard remains a separate, read-only Vite app served by `shrk dashboard`. - Not a publishing surface. Nothing leaves the filesystem.