Studio / expert HTML report
Two tracks. Pick the one that matches the mission. Never put Three.js on a
PPT or Word page.
File naming
| Mission |
Report file / app |
| RiskLens |
risklens-report-[YYYYMMDD-HHMMSS] |
| SEO |
seo-report-[YYYYMMDD-HHMMSS] |
Marketing (/campaign) |
marketing-report-[YYYYMMDD-HHMMSS] |
| Montage |
montage-report-[YYYYMMDD-HHMMSS] |
| Ads |
ads-report-[YYYYMMDD-HHMMSS] |
| Leads |
leads-report-[YYYYMMDD-HHMMSS] |
| Scraping |
scrape-report-[YYYYMMDD-HHMMSS] |
| Meeting |
meeting-report-[YYYYMMDD-HHMMSS] |
Review (/inspect) |
review-report-[YYYYMMDD-HHMMSS].html |
Security (/fortify) |
security-report-[YYYYMMDD-HHMMSS].html |
Debug (/debug) |
debug-report-[YYYYMMDD-HHMMSS].html |
Also keep working files in native formats next to it when useful: .md, .csv,
.xlsx, .json, images, etc. The report is the summary surface, not a
replacement for data files.
Track A - Studio / GTM UI (convert UI, not PDF)
Missions: RiskLens, SEO, Marketing, Montage, Ads, Leads, Meeting, Scraping.
The report is an interactive UI. Do not design for Export PDF. File Preview
print is not the close path.
Stack (required)
Vite + React + one official DS (MUI / Fluent / Carbon) + framer-motion +
three + @react-three/fiber + @react-three/drei. Follow ui-ux-pro-max
and make-interfaces-feel-better.
Before the scene:
python3 "$SEARCH" "<report theme> spatial dashboard" --stack threejs
Use the drei helpers the search returns: OrbitControls (damping), Environment,
ContactShadows, PresentationControls when the hero is a product. Optional
@react-three/postprocessing only if that hero needs bloom.
Scene quality (required)
- One R3F Canvas / one renderer;
pixelRatio capped at 2; antialias at construct
- PBR materials + AmbientLight + DirectionalLight (never a black unlit mesh)
- shadowMap on; cast/receive on the hero and the ground
- FOV 45-75; explicit camera position + lookAt
- Designed object or environment the user can read, HTML overlay for the report
prefers-reduced-motion: freeze the scene, show the still
- Canvas
role="img" and a real aria-label
- Never wallpaper particles, never a blank canvas, never GSAP/Spline/Lottie spam
Layout (overlay on the scene)
- Header - mission name, report title, subject / scope / path, timestamp
- Executive summary - 3-6 bullets or short cards (what matters first)
- Body sections - one clear section per theme; working controls only
- Deliverables - table: file path | format | what it contains. Only what the
user asked for; render scripts, scrapers and intermediates live under
build/ and never appear in this table
- Footer - generated by Navin, timestamp, short disclaimer if needed
After writing
Start the app and call open_preview (web). Click the primary nav yourself.
Do not paste the full HTML into chat. Do not close with Export PDF.
Track B - Expert File Preview report (no JavaScript)
Missions: Review (/inspect), Security (/fortify), Debug (/debug).
File Preview sandboxes scripts - no JS interactivity. Self-contained file:
all CSS inline in a style block. No external fonts, no javascript, no CDNs.
For Review / Security / Debug tool reports (code_review report,
security_scan write_report, debug_repair report), File Preview opens
automatically in the WebUI. Otherwise call open_file_preview on the HTML
path immediately (Download HTML). Print CSS is optional. PDF is not the
design target. Do not paste the full HTML into chat.
Layout
- Header - mission name, report title, subject / scope / path, timestamp
- Executive summary - 3-6 bullets or short cards (what matters first);
for Review/Security/Debug: severity counters (Critical / High / Medium / Low)
- Body sections - one clear section per theme
- Remediation plan (Review / Security / Debug) - numbered choices the user
can pick in chat (
Start with #1, #2, …). Each choice: title, severity,
effort (S/M/L), risk if delayed, first concrete step
- Deliverables - table: file path | format | what it contains. Only what the
user asked for; render scripts, scrapers and intermediates live under
build/ and never appear in this table
- Footer - generated by Navin, timestamp, short disclaimer if needed
Finding cards (Review / Security / Debug) - required
For every confirmed finding, render a card with:
| Field |
Rule |
| Severity chip |
Critical / High / Medium / Low / Info with color |
| Title |
Short, specific |
| Location |
path/to/file.ext:LINE (or hunk range) |
| Impact |
What an attacker / user / system suffers |
| Real example |
Mandatory proof - see below |
| Fix |
Minimal concrete remediation |
Real example (pick what fits; at least one per finding):
- Vulnerable or buggy code excerpt (10-40 lines max, redact secrets)
- Payload / PoC (
' OR 1=1--, XSS string, curl with headers)
- HTTP request/response snippet proving the flaw
- Failing test / stack trace / scanner output (trimmed)
- Before → after snippet for the recommended fix
Never fill with a generic OWASP paragraph and no project-specific proof.
Remediation plan UI (no JavaScript)
Use numbered choice cards styled like selectable options:
<section class="plan">
<h2>Remediation plan - choose where to start</h2>
<p class="hint">Reply in chat with the number, e.g. "Start with #1".</p>
<article class="choice">
<header><span class="num">#1</span> <span class="sev">Critical</span> Title</header>
<p>Effort: S · Risk if delayed: …</p>
<p>First step: …</p>
</article>
…
</section>
Order choices by severity × exploitability (or by dependency for Debug).
Do not auto-start fixes until the user picks a number (unless they already
asked for Auto-fix / fix everything).
Roadmap & strategy (audits / Review / Security / Debug) - required
A remediation list alone is not a plan. After the choices, add a
Roadmap section with 3-4 phases, each rendered as a card:
| Phase |
Horizon |
Content rule |
| Phase 0 - Stabiliser |
24-72h |
Only stop-the-bleeding items (exposed secrets, live exploits, data loss) |
| Phase 1 - Corriger |
1-2 semaines |
Critical/High fixes, grouped by module so one owner can batch them |
| Phase 2 - Renforcer |
30-60 jours |
Structural work: tests, CI gates, auth hardening, monitoring |
| Phase 3 - Exceller |
Trimestre |
Architecture debt, performance, design system, documentation |
Each phase must list: objective (one sentence), the numbered tasks it
contains (reference the remediation choice numbers), effort in
person-days per task, dependencies between tasks ("needs #3 first"),
and an exit criterion that is verifiable ("CI blocks merge when
tests fail", "gitleaks scan returns 0 findings"), not vague ("better
security").
Close the roadmap with a short Strategy block (5-10 lines of prose,
not bullets):
- Target state in one paragraph: what the project looks like when the
roadmap is done, with 2-3 measurable KPIs (test coverage %, mean time
to patch, Lighthouse score, error budget)
- Quick wins vs structural work: name which items buy the most risk
reduction per day of effort and why
- Verification loop: how each fix is proven (test added, scanner re-run,
CI gate) so regressions cannot silently return
- Top 2 risks of the plan itself (e.g. key rotation breaks a deploy,
strict TS flags block the team) and the mitigation for each
Every recommendation in the report must be actionable as written: name
the exact file/command/config to change and what to change it to. "Add
rate limiting" is filler; "add slowapi Limiter on POST /api/auth/login,
5/min per IP, see snippet" is a recommendation.
Visual system
- Prefer a clean dark report shell: background
#0a0e1a, cards #121826,
text #e8eefc, muted #9aa8c7, accent #5b8cff, success #3ecf8e,
warning #f0b429, danger #f07178
- System UI / sans stack:
ui-sans-serif, system-ui, sans-serif
- Generous spacing, 12-16px card radius, subtle 1px borders
- Severity / score chips with color, not emoji spam
- Code / PoC blocks: monospace,
#0d1117 background, wrap long lines
- Tables: readable zebra or row separators; wrap long URLs
- Print-friendly:
@media print with white/black fallbacks so a print
dialog stays legible if the user asks
Content rules
- Specific numbers, URLs, paths, and code - no filler
- Mask secrets in examples (
sk-***, password hashes truncated)
- Link workspace file paths as plain text paths (not
file://)
- Keep the HTML under ~300 KB when possible so Preview is not truncated
- French or English to match the user brief
Mission-specific emphasis
- RiskLens - synthesis (most likely / most dangerous / hidden assumption),
failure cards, revised plan, checklist (Track A UI)
- SEO - impact-ordered findings, keyword clusters, content actions, schema
/ meta snippets when relevant (Track A UI)
- Marketing - message / persona, channel plan, asset inventory with paths
(Track A UI)
- Leads - ICP snapshot, ranked accounts/people, signals, outreach next steps
(source URLs mandatory) (Track A UI)
- Ads - evidence paths, kill/scale, no invented ROAS (Track A UI)
- Scraping - crawl stats, ok/error, export paths, sample rows (Track A UI)
- Meeting - decisions, owners, actions (Track A UI)
- Review - Approve / Request changes verdict; findings by layer
(correctness, SQL/data, API, frontend, tests, perf); remediation choices
- Security - phase coverage (injection, front, authz, network, secrets,
privacy); PoC per finding; hardening plan choices
- Debug - root-cause statement with evidence; related latent bugs; fix
plan choices ordered by unblock value
Chat close
Studio / GTM: three to six sentences max: headline result + the Preview UI
path + the other key file formats. Expert Review / Security / Debug: ask
which remediation number to start with.
1---2name: studio-html-report3description: Studio / GTM reports are interactive Three.js UIs opened with open_preview (UI, not PDF). Expert Review / Security / Debug stay a self-contained HTML file in File Preview (no JavaScript). Use after RiskLens, SEO, Marketing, Leads, Ads, Montage, Meeting, Scraping, Review, Security, or Debug.4---56# Studio / expert HTML report78Two tracks. Pick the one that matches the mission. Never put Three.js on a9PPT or Word page.1011## File naming1213| Mission | Report file / app |14|---|---|15| RiskLens | `risklens-report-[YYYYMMDD-HHMMSS]` |16| SEO | `seo-report-[YYYYMMDD-HHMMSS]` |17| Marketing (`/campaign`) | `marketing-report-[YYYYMMDD-HHMMSS]` |18| Montage | `montage-report-[YYYYMMDD-HHMMSS]` |19| Ads | `ads-report-[YYYYMMDD-HHMMSS]` |20| Leads | `leads-report-[YYYYMMDD-HHMMSS]` |21| Scraping | `scrape-report-[YYYYMMDD-HHMMSS]` |22| Meeting | `meeting-report-[YYYYMMDD-HHMMSS]` |23| Review (`/inspect`) | `review-report-[YYYYMMDD-HHMMSS].html` |24| Security (`/fortify`) | `security-report-[YYYYMMDD-HHMMSS].html` |25| Debug (`/debug`) | `debug-report-[YYYYMMDD-HHMMSS].html` |2627Also keep working files in native formats next to it when useful: `.md`, `.csv`,28`.xlsx`, `.json`, images, etc. The report is the **summary surface**, not a29replacement for data files.3031---3233## Track A - Studio / GTM UI (convert UI, not PDF)3435Missions: RiskLens, SEO, Marketing, Montage, Ads, Leads, Meeting, Scraping.3637The report is an **interactive UI**. Do not design for Export PDF. File Preview38print is not the close path.3940### Stack (required)4142Vite + React + one official DS (MUI / Fluent / Carbon) + `framer-motion` +43`three` + `@react-three/fiber` + `@react-three/drei`. Follow `ui-ux-pro-max`44and `make-interfaces-feel-better`.4546Before the scene:4748```bash49python3 "$SEARCH" "<report theme> spatial dashboard" --stack threejs50```5152Use the drei helpers the search returns: OrbitControls (damping), Environment,53ContactShadows, PresentationControls when the hero is a product. Optional54`@react-three/postprocessing` only if that hero needs bloom.5556### Scene quality (required)5758- One R3F Canvas / one renderer; `pixelRatio` capped at 2; antialias at construct59- PBR materials + AmbientLight + DirectionalLight (never a black unlit mesh)60- shadowMap on; cast/receive on the hero and the ground61- FOV 45-75; explicit camera position + lookAt62- Designed object or environment the user can read, HTML overlay for the report63- `prefers-reduced-motion`: freeze the scene, show the still64- Canvas `role="img"` and a real aria-label65- Never wallpaper particles, never a blank canvas, never GSAP/Spline/Lottie spam6667### Layout (overlay on the scene)68691. **Header** - mission name, report title, subject / scope / path, timestamp702. **Executive summary** - 3-6 bullets or short cards (what matters first)713. **Body sections** - one clear section per theme; working controls only724. **Deliverables** - table: file path | format | what it contains. Only what the73 user asked for; render scripts, scrapers and intermediates live under74 `build/` and never appear in this table755. **Footer** - generated by Navin, timestamp, short disclaimer if needed7677### After writing7879Start the app and call `open_preview` (web). Click the primary nav yourself.80Do not paste the full HTML into chat. Do not close with Export PDF.8182---8384## Track B - Expert File Preview report (no JavaScript)8586Missions: Review (`/inspect`), Security (`/fortify`), Debug (`/debug`).8788File Preview sandboxes scripts - **no JS interactivity**. Self-contained file:89all CSS inline in a style block. No external fonts, no javascript, no CDNs.9091For Review / Security / Debug tool reports (`code_review` report,92`security_scan` write_report, `debug_repair` report), File Preview opens93automatically in the WebUI. Otherwise call `open_file_preview` on the HTML94path immediately (Download HTML). Print CSS is optional. PDF is not the95design target. Do not paste the full HTML into chat.9697### Layout98991. **Header** - mission name, report title, subject / scope / path, timestamp1002. **Executive summary** - 3-6 bullets or short cards (what matters first);101 for Review/Security/Debug: severity counters (Critical / High / Medium / Low)1023. **Body sections** - one clear section per theme1034. **Remediation plan (Review / Security / Debug)** - numbered choices the user104 can pick in chat (`Start with #1`, `#2`, …). Each choice: title, severity,105 effort (S/M/L), risk if delayed, first concrete step1065. **Deliverables** - table: file path | format | what it contains. Only what the107 user asked for; render scripts, scrapers and intermediates live under108 `build/` and never appear in this table1096. **Footer** - generated by Navin, timestamp, short disclaimer if needed110111### Finding cards (Review / Security / Debug) - required112113For **every** confirmed finding, render a card with:114115| Field | Rule |116|---|---|117| Severity chip | Critical / High / Medium / Low / Info with color |118| Title | Short, specific |119| Location | `path/to/file.ext:LINE` (or hunk range) |120| Impact | What an attacker / user / system suffers |121| **Real example** | Mandatory proof - see below |122| Fix | Minimal concrete remediation |123124**Real example** (pick what fits; at least one per finding):125126- Vulnerable or buggy **code excerpt** (10-40 lines max, redact secrets)127- **Payload / PoC** (`' OR 1=1--`, XSS string, curl with headers)128- **HTTP request/response** snippet proving the flaw129- **Failing test / stack trace / scanner output** (trimmed)130- **Before → after** snippet for the recommended fix131132Never fill with a generic OWASP paragraph and no project-specific proof.133134### Remediation plan UI (no JavaScript)135136Use numbered choice cards styled like selectable options:137138```html139<section class="plan">140 <h2>Remediation plan - choose where to start</h2>141 <p class="hint">Reply in chat with the number, e.g. "Start with #1".</p>142 <article class="choice">143 <header><span class="num">#1</span> <span class="sev">Critical</span> Title</header>144 <p>Effort: S · Risk if delayed: …</p>145 <p>First step: …</p>146 </article>147 …148</section>149```150151Order choices by severity × exploitability (or by dependency for Debug).152Do not auto-start fixes until the user picks a number (unless they already153asked for Auto-fix / fix everything).154155### Roadmap & strategy (audits / Review / Security / Debug) - required156157A remediation list alone is not a plan. After the choices, add a158**Roadmap** section with 3-4 phases, each rendered as a card:159160| Phase | Horizon | Content rule |161|---|---|---|162| Phase 0 - Stabiliser | 24-72h | Only stop-the-bleeding items (exposed secrets, live exploits, data loss) |163| Phase 1 - Corriger | 1-2 semaines | Critical/High fixes, grouped by module so one owner can batch them |164| Phase 2 - Renforcer | 30-60 jours | Structural work: tests, CI gates, auth hardening, monitoring |165| Phase 3 - Exceller | Trimestre | Architecture debt, performance, design system, documentation |166167Each phase must list: objective (one sentence), the numbered tasks it168contains (reference the remediation choice numbers), **effort in169person-days per task**, dependencies between tasks ("needs #3 first"),170and an **exit criterion** that is verifiable ("CI blocks merge when171tests fail", "gitleaks scan returns 0 findings"), not vague ("better172security").173174Close the roadmap with a short **Strategy** block (5-10 lines of prose,175not bullets):176177- Target state in one paragraph: what the project looks like when the178 roadmap is done, with 2-3 measurable KPIs (test coverage %, mean time179 to patch, Lighthouse score, error budget)180- Quick wins vs structural work: name which items buy the most risk181 reduction per day of effort and why182- Verification loop: how each fix is proven (test added, scanner re-run,183 CI gate) so regressions cannot silently return184- Top 2 risks of the plan itself (e.g. key rotation breaks a deploy,185 strict TS flags block the team) and the mitigation for each186187Every recommendation in the report must be actionable as written: name188the exact file/command/config to change and what to change it to. "Add189rate limiting" is filler; "add slowapi Limiter on POST /api/auth/login,1905/min per IP, see snippet" is a recommendation.191192### Visual system193194- Prefer a clean dark report shell: background `#0a0e1a`, cards `#121826`,195 text `#e8eefc`, muted `#9aa8c7`, accent `#5b8cff`, success `#3ecf8e`,196 warning `#f0b429`, danger `#f07178`197- System UI / sans stack: `ui-sans-serif, system-ui, sans-serif`198- Generous spacing, 12-16px card radius, subtle 1px borders199- Severity / score chips with color, not emoji spam200- Code / PoC blocks: monospace, `#0d1117` background, wrap long lines201- Tables: readable zebra or row separators; wrap long URLs202- Print-friendly: `@media print` with white/black fallbacks so a print203 dialog stays legible if the user asks204205### Content rules206207- Specific numbers, URLs, paths, and code - no filler208- Mask secrets in examples (`sk-***`, password hashes truncated)209- Link workspace file paths as plain text paths (not `file://`)210- Keep the HTML under ~300 KB when possible so Preview is not truncated211- French or English to match the user brief212213## Mission-specific emphasis214215- **RiskLens** - synthesis (most likely / most dangerous / hidden assumption),216 failure cards, revised plan, checklist (Track A UI)217- **SEO** - impact-ordered findings, keyword clusters, content actions, schema218 / meta snippets when relevant (Track A UI)219- **Marketing** - message / persona, channel plan, asset inventory with paths220 (Track A UI)221- **Leads** - ICP snapshot, ranked accounts/people, signals, outreach next steps222 (source URLs mandatory) (Track A UI)223- **Ads** - evidence paths, kill/scale, no invented ROAS (Track A UI)224- **Scraping** - crawl stats, ok/error, export paths, sample rows (Track A UI)225- **Meeting** - decisions, owners, actions (Track A UI)226- **Review** - Approve / Request changes verdict; findings by layer227 (correctness, SQL/data, API, frontend, tests, perf); remediation choices228- **Security** - phase coverage (injection, front, authz, network, secrets,229 privacy); PoC per finding; hardening plan choices230- **Debug** - root-cause statement with evidence; related latent bugs; fix231 plan choices ordered by unblock value232233## Chat close234235Studio / GTM: three to six sentences max: headline result + the Preview UI236path + the other key file formats. Expert Review / Security / Debug: ask237which remediation number to start with.