Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Threat Intelligence Report Design System — ReportLab-based PDF generation for A4 reports with Transilience branding, typography, and layout standards.
.claude/skills/transilienceai-transilience-report-style/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -46% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -23% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -13% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 16% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -7% | 0% |
Turns a structured findings JSON into a branded A4 PDF (light theme by default — modern/minimal; --theme dark fallback; brand gradient rule, boxed code/samples, framed screenshots, colour-coded severity + CVSS-score, findings cards, severity metrics) — the standard Transilience deliverable. The generator is data-driven: you assemble one JSON, run one command. Design system: formats/transilience-report-style/SKILL.md §0 (theme/palette).
report_data.json matching reference/report-data-schema.json. Only engagement and findings are required; every other key (executive_summary, metrics, sections, cve_register, coverage_table, attack_pattern_coverage, ruled_out, tools_used, roadmap, disclaimer) is an optional section that is skipped if absent. See reference/example-report-data.json for a minimal working file.sections[] entry with "internal": true is retained in report_data.json (kept as the internal record) but is never rendered into the client PDF. Use it for internal QA logs such as blind-validation / independent-reproduction verdict tables — these must not appear in any client-facing PDF.bash python3 reference/generate_report.py <report_data.json> -o reports/My-Report.pdf Fonts + logo are auto-discovered from formats/transilience-report-style/. Override with --assets <dir> if running outside the repo. Requires reportlab (pip install reportlab).
pdftoppm -png -r 100 -f 1 -l 1 out.pdf /tmp/p) and reading it before delivery.generate_report.py <data.json> --exec-only renders cover + KPI boxes + narrative + roadmap and no finding detail or technical registers, for circulation beyond the security team. The KPI counts still describe the whole engagement.python3 ../../tools/report_export.py <data.json> --format csv|xml -o findings.csv emits the findings register for a vulnerability-management import. Same rows as the PDF register and the xlsx: one projection, three renderings.Cover (logo, title lines, subtitle, metadata) → Executive Summary (auto KPI metric boxes from severity counts + narrative + key risks + positives) → free-form sections (Scope/Methodology) → finding cards grouped Critical→Info (severity bar, CVSS+vector, CWE/OWASP, status, affected, description, impact, optional PoC block — ordered steps each with prose + code-styled command + embedded screenshot, optional severity-calibration, optional per-finding CVE table, remediation) → optional CVE register, coverage table, Attack Pattern Coverage (deterministic surface-unit × attack-class matrix with colour-coded status), ruled-out appendix, Tools & Techniques Used, remediation roadmap, disclaimer. Section numbers are assigned automatically.
id, title, severity (Critical|High|Medium|Low|Info), cvss_score, cvss_vector, cwe, owasp, affected[], description, impact, recommendation + optional poc[], calibration, needs_live_confirmation, cves[], attack[]. attack[] carries MITRE technique ids — ATT&CK (T1190, T1059.001) or, for AI/LLM findings that have no ATT&CK technique, ATLAS (AML.T0051); it renders beside CWE/OWASP and appears in every export. poc is an ordered list of steps {description, command, image_url} (it merges the former evidence / poc_request / screenshot fields): each renders as a numbered prose description, an optional code-styled command, and an optional embedded image. PAN/Aadhaar/card-like values are defensively masked at render time — but redact real secrets/PII in your source text anyway.
calibration field (see formats/transilience-report-style/pentest-report.md §7).formats/transilience-report-style/SKILL.mdformats/transilience-report-style/pentest-report.mdformats/transilience-report-style/compliance-report.mdreference/generate_report.py · Schema: reference/report-data-schema.json · Example: reference/example-report-data.json../../tools/report_data_lint.py — run before generate_report.py; it (and the generator's own report_data_shape guard) block a string-narrative, an invalid severity, or an unsafe <img>/<a href> from reaching a client PDF.--rescore <disposition.csv> / --scope <allowlist> restrict+renumber / cross-feed; always re-derives KPIs + scrubs narrative finding-counts): ../../tools/report_data_revise.py — the incremental-revision entry point, distinct from merge-reports' N→1 consolidation.../../tools/report_ingest.py — bootstraps merge / retest / CERT-In from an already-produced deliverable instead of hand re-keying.Other measured skills in the registry, with their headline benchmark lift.