Pro Report Builder
thatrebeccarae/claude-marketing
Create polished HTML technical reports and multi-page documents for consulting deliverables.
Threat Intelligence Report Design System — ReportLab-based PDF generation for A4 reports with Transilience branding, typography, and layout standards.
$ npx skills add transilienceai/communitytools --skill transilience-report-style -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install transilienceai/communitytools transilience-report-style --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/transilienceai/communitytools.git skills-src && mkdir -p .claude/skills && cp -r skills-src/formats/transilience-report-style .claude/skills/transilience-report-style && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "transilience-report-style" agent skill from https://github.com/transilienceai/communitytools/tree/main/formats/transilience-report-style into .claude/skills/transilience-report-style/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "transilience-report-style", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/transilienceai/communitytools/tree/main/formats/transilience-report-styleType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add transilienceai/communitytools --skill transilience-report-style -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install transilienceai/communitytools transilience-report-style --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/transilienceai/communitytools.git skills-src && mkdir -p .agents/skills && cp -r skills-src/formats/transilience-report-style .agents/skills/transilience-report-style && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "transilience-report-style" agent skill from https://github.com/transilienceai/communitytools/tree/main/formats/transilience-report-style into .agents/skills/transilience-report-style/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "transilience-report-style", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add transilienceai/communitytools --skill transilience-report-style -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install transilienceai/communitytools transilience-report-style --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/transilienceai/communitytools.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/formats/transilience-report-style .cursor/skills/transilience-report-style && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "transilience-report-style" agent skill from https://github.com/transilienceai/communitytools/tree/main/formats/transilience-report-style into .cursor/skills/transilience-report-style/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "transilience-report-style", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/transilienceai/communitytools.git --path formats/transilience-report-style--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add transilienceai/communitytools --skill transilience-report-style -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install transilienceai/communitytools transilience-report-style --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/transilienceai/communitytools.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/formats/transilience-report-style .gemini/skills/transilience-report-style && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "transilience-report-style" agent skill from https://github.com/transilienceai/communitytools/tree/main/formats/transilience-report-style into .gemini/skills/transilience-report-style/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "transilience-report-style", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install transilienceai/communitytools transilience-report-styleInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add transilienceai/communitytools --skill transilience-report-style -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/transilienceai/communitytools.git skills-src && mkdir -p .github/skills && cp -r skills-src/formats/transilience-report-style .github/skills/transilience-report-style && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "transilience-report-style" agent skill from https://github.com/transilienceai/communitytools/tree/main/formats/transilience-report-style into .github/skills/transilience-report-style/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "transilience-report-style", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add transilienceai/communitytools --skill transilience-report-style -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install transilienceai/communitytools transilience-report-style --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/transilienceai/communitytools.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/formats/transilience-report-style .opencode/skills/transilience-report-style && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "transilience-report-style" agent skill from https://github.com/transilienceai/communitytools/tree/main/formats/transilience-report-style into .opencode/skills/transilience-report-style/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "transilience-report-style", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
transilience-report-styleThreat Intelligence Report Design System — ReportLab-based PDF generation for A4 reports with Transilience branding, typography, and layout standards.
Transilience Report Style is an agent skill from transilienceai/communitytools. Threat Intelligence Report Design System — ReportLab-based PDF generation for A4 reports with Transilience branding, typography, and layout standards.
Its SKILL.md is about 6.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 12 other files (for example `compliance-report.md` and `pentest-report.md`).
It sits in Frontend & Design, covering Typography, OSINT and PDF. It works with pypdf. The repository describes itself as: Open-source Claude Code skills, agents, and slash commands for AI-powered penetration testing, bug bounty hunting, and security research. The licence is MIT.
12 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 95fdc12. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Transilience Report Style loads about 6.3k tokens when it runs. Until then it costs about 44 tokens; SKILL.md has 3,018 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from transilienceai/communitytools at commit 95fdc12, republished under its MIT licence (© transilienceai). 3,018 words, ~6,274 tokens.
.claude/skills/transilience-report-style/SKILL.md (or your agent's skills folder). This skill also uses 11 other files; get the full folder from GitHub.Version: 5.0 — Light theme (modern, minimal, professional)
Format: PDF (A4), ReportLab
Last Updated: July 7, 2026
The report now renders a light theme by default (white page, dark ink, brand accents). Both palettes live
in the THEME dict in generate_report.py; select with --theme light|dark (or engagement.theme).
Precedence: --theme > engagement.theme > light; an unknown value falls back to light (never errors).
The pentest-engagement finalize gate passes no --theme, so all gated PDFs are light. The sections below marked
"(dark fallback)" describe the retained --theme dark palette.
#6941C6 → magenta #C9317C)| Token | Hex | Use |
|---|---|---|
PAGE / SURFACE | #FFFFFF | page + card background |
TINT / ALT | #F6F4FB / #FBFAFE | KPI boxes · table headers/tracks · zebra rows |
INK | #1B1725 | headings + body text |
INK_SOFT | #5A5568 | secondary text |
LBL | #6B7280 | small labels / captions |
BORDER | #E7E3F0 | hairlines, card borders, table grid |
BRAND / BRAND2 | #6941C6 / #C9317C | section numbers, rules, subheads / gradient end |
CODE_BG / CODE_INK / CODE_BORDER | #F5F4F8 / #2A2536 / #E4E0EE | boxed code / samples (codebox) |
GREEN / BLUE / AMBER | #15803D / #2563EB / #B45309 | remediation / refs·CVE / caveat labels |
SEV | Critical #DC2626 · High #EA580C · Medium #CA8A04 · Low #16A34A · Info #64748B | severity |
[SEV] tag; and in every
risk table (findings summary, CVE register, per-finding CVE table) both the severity label and the
CVSS score cell are band-coloured + bold — the label by its severity, the score by score_band(score).
tbl(..., sevcol=, scorecol=) selects the columns; the colour is emitted as an inline <font> tag inside
the cell (a TableStyle TEXTCOLOR is ignored on ReportLab Paragraph cells, so it must live in the
cell markup). Empty/non-numeric score cells stay uncoloured.codebox() renders CVSS vectors, PoC/test requests, affected assets, and
endpoints in a bordered light-grey monospace block; screenshots are framed with a border + caption.Table (severity left-stripe + hairline box + padding)
so tall Critical findings split cleanly across pages (border redrawn per fragment).| Property | Value |
|---|---|
| Page Size | A4 (595.28 × 841.89 pt) |
| Margins | 20mm all sides |
| Content Width (CW) | 555.28 pt (A4 width − 2 × 20mm) |
| Top Margin Offset | +8 pt (28mm effective top) |
| Bottom Margin Offset | +10 pt (30mm effective bottom) |
| Background Color | #FFFFFF (light default) · #07040B under --theme dark |
| Output | Embedded fonts, single PDF file |
| Alias | Font | Weight | Role |
|---|---|---|---|
FH | Poppins-Bold | 700 | Headlines, metric values, section numbers, score values |
FM | Poppins-Medium | 500 | Subheads, section labels, card section headers, sidebar labels |
FR | Poppins (Regular) | 400 | Footer text, metadata labels, TOC sub-items |
FL | Poppins-Light | 300 | Reserved (registered, not actively used) |
FI | Poppins-Italic | 400i | Reserved (registered, not actively used) |
FB | Carlito (Regular) | 400 | Body text, card summaries, table cells, bullet content |
FBB | Carlito-Bold | 700 | Bold inline emphasis within body paragraphs |
FBI | Carlito-Italic | 400i | Confidentiality notices, closing statement |
FBBI | Carlito-BoldItalic | 700i | Registered for <b><i> combinations within Carlito |
FMONO | Courier | — | MITRE technique IDs, CVE identifiers, subdomain names |
Family Registration: Carlito is registered as a full family (normal, bold, italic, boldItalic) enabling automatic style switching via ReportLab's <b> and <i> XML tags.
| Style Key | Font | Size | Leading | Color | Alignment | Usage |
|---|---|---|---|---|---|---|
ct | Poppins-Bold | 36 pt | 44 pt | #FFFFFF | Left | Cover title ("THREAT INTELLIGENCE", "REPORT") |
cc | Poppins-Medium | 18 pt | 24 pt | #8B5CF6 | Left | Cover client name |
h1 | Poppins-Bold | 20 pt | 26 pt | #FFFFFF | Left | Section titles |
h2 | Poppins-Medium | 16 pt | 21 pt | #FFFFFF | Left | Subsection titles |
h3 | Poppins-Medium | 13 pt | 17 pt | #8B5CF6 | Left | Sub-headers within sections |
tt | Poppins-Medium | 13 pt | 18 pt | #FFFFFF | Left | Card titles, posture item titles |
body | Carlito | 12 pt | 17 pt | #F0F2F5 | Justify | Body paragraphs |
bs | Carlito | 11 pt | 15 pt | #F0F2F5 | Left | Small body (table cells, metadata values) |
ts | Carlito | 11 pt | 16 pt | #F0F2F5 | Justify | Card description text |
label | Poppins | 10 pt | 13 pt | #E0E3E8 | Left | Cover metadata labels |
sl | Poppins-Medium | 10 pt | 13 pt | #8B5CF6 | Left | Table column headers |
bullet | Carlito | 12 pt | 17 pt | #F0F2F5 | Left | Bullet items (14pt leftIndent, 0 bulletIndent) |
notice | Carlito-Italic | 10 pt | 14 pt | #E0E3E8 | Left | Confidentiality footer |
| Element | Font | Size | Color | Notes |
|---|---|---|---|---|
| Serial + Severity Tag | Poppins-Bold | 14 pt | Severity color | Format: #1 [CRITICAL] |
| Card Title | Poppins-Bold | 14 pt | #FFFFFF | Same line as serial, leading 20pt |
| Metadata Row | Carlito | 10 pt | #F0F2F5 | Labels in #8B5CF6, pipe-separated |
| Score Labels | Poppins-Medium | 10 pt | #F0F2F5 | "SEVERITY", "RELEVANCE", "PRIORITY" |
| Score Values | Poppins-Bold | 12 pt | Dynamic color | 0.85 format |
| Score Band Label | Poppins-Bold | 10 pt | Dynamic color | "HIGH", "MEDIUM", "LOW" (priority row only) |
| Section Headers | Poppins-Medium | 10 pt | #8B5CF6 | "TECHNICAL DETAILS", "IMPACT CONTEXT", etc. |
| Detection Evidence Header | Poppins-Medium | 10 pt | #10B981 | Green to distinguish from purple headers |
| Section Body | Carlito | 11 pt | #F0F2F5 | leading 15pt |
| MITRE Label | Carlito | 11 pt | #F59E0B | Amber for "MITRE Tactics:", "Techniques:" |
| CVE Label | Carlito | 11 pt | #3B82F6 | Blue for "CVEs:" |
| CVE/Technique Values | Courier | 10–11 pt | #F0F2F5 | Monospace for IDs |
| Relevance Bullets | Carlito | 11 pt | #F0F2F5 | • symbol, 16pt leftIndent, leading 16pt |
| Source Link | Carlito | 10 pt | #3B82F6 | Underlined |
--theme dark; light palette in §0.1)| Token | Hex | RGB | Usage |
|---|---|---|---|
BG | #07040B | (7, 4, 11) | Page background — deepest layer |
BG2 | #0D0A14 | (13, 10, 20) | Reserved secondary background |
BGC | #13101C | (19, 16, 28) | Card backgrounds, table header rows, metric boxes |
BGCA | #1A1625 | (26, 22, 37) | Alternating table rows, progress bar track |
BGEL | #18181B | (24, 24, 27) | Reserved elevated surface |
GL | #1E1A2E | (30, 26, 46) | Table gridlines, footer bar background |
BS | #2A2535 | (42, 37, 53) | Card/box border stroke (0.4pt width) |
| Token | Hex | RGB | Usage |
|---|---|---|---|
BP | #6941C6 | (105, 65, 198) | Primary brand — TOC numbers, metric accents, section number ghost |
BPL | #8B5CF6 | (139, 92, 246) | Primary light — h3 headers, card section headers, metadata labels, page numbers |
BM | #C9317C | (201, 49, 124) | Magenta accent — third-party tech stack category |
| Token | Hex | Usage |
|---|---|---|
T1 | #FFFFFF | Brightest — headlines, card titles, tech names in evidence |
T2 | #F0F2F5 | Primary body — paragraphs, table cells, card content |
T3 | #E0E3E8 | Muted — labels, impact context field names, no-match text |
TM | #CDD1D8 | Most muted — fallback severity color |
| Token | Hex | Severity | Usage |
|---|---|---|---|
SC | #EF4444 | Critical | Accent bars, score coloring, badges, immediate recommendations |
SH | #FB923C | High | Accent bars, score coloring, badges, short-term recommendations |
SM | #EAB308 | Medium | Accent bars, score coloring, badges, medium-term recommendations |
SL | #22C55E | Low | Accent bars, score coloring, badges, security posture "STRONG" |
| Token | Hex | Usage |
|---|---|---|
AB | #3B82F6 | Info blue — CVE labels, source links, "ASSETS" metric box |
AE | #10B981 | Emerald green — "Implemented" status, detection evidence header |
AA | #F59E0B | Amber — MITRE labels, analytics tech category |
The brand gradient is a linear interpolation between two endpoints used across multiple components:
| Property | Start (left) | End (right) |
|---|---|---|
| Red | 0.412 (105/255) | 0.788 (201/255) |
| Green | 0.255 (65/255) | 0.192 (49/255) |
| Blue | 0.776 (198/255) | 0.486 (124/255) |
| Hex equivalent | #6941C6 (BP) | #C9317C (BM) |
Rendered as: 80 discrete steps, left-to-right. Used in: page top rule (3.5pt), section dividers (2pt), cover separators (3pt), progress bars, card bottom dividers.
A full-width or partial-width horizontal rule using the brand gradient.
| Property | Value |
|---|---|
| Default height | 2 pt |
| Steps | 80 |
| Corner radius | None (rectangular) |
| Usage | Section dividers (full CW, 2pt), cover (full CW, 3pt), cover sub-separator (CW×0.35, 2pt), card bottom (CW×0.5, 1pt) |
A proportional progress bar with gradient fill and rounded track.
| Property | Value |
|---|---|
| Track height | 12 pt |
| Track background | BGCA (#1A1625) |
| Track corner radius | 3 pt |
| Fill | Brand gradient, clipped to fraction width |
| Min fraction | 0.06 (floor) |
| Max width | 160 pt (default) |
A bordered container with optional accent sidebar. Used for posture items, recommendations, methodology phases.
| Property | Value |
|---|---|
| Background | BGC (#13101C) |
| Corner radius | 6 pt |
| Border | BS (#2A2535), 0.4 pt stroke |
| Accent bar | 4 pt wide, full height, left side, 2pt corner radius |
| Default padding | 11 pt |
| Content offset | padding + 6pt (when accent present) |
A compact KPI display used in the executive summary row.
| Property | Value |
|---|---|
| Height | 58 pt |
| Width | (CW − 30) / 5 per box |
| Background | BGC (#13101C) |
| Border | BS 0.4pt stroke, 6pt corner radius |
| Top accent | 3pt colored bar across full width, 1pt corner radius |
| Value | Poppins-Bold 22pt, centered, severity-colored |
| Label | Poppins 9pt, centered, T2, 7pt from bottom |
A colored pill showing severity level.
| Property | Value |
|---|---|
| Width | 60 pt |
| Height | 16 pt |
| Corner radius | 3 pt |
| Background | Severity color fill |
| Text | Poppins-Medium 9pt, centered |
| Text color | White (critical/high/low), Black (medium) |
A large decorative section number with ghost double-strike effect.
| Property | Value |
|---|---|
| Width | Full CW |
| Height | 38 pt |
| Front layer | Poppins-Bold 42pt, rgba(105, 65, 198, 0.7) at (0, 0) |
| Ghost layer | Poppins-Bold 42pt, rgba(140, 92, 230, 0.5) at (1, 1) — offset 1pt right and up |
Three horizontal inline score bars stacked vertically.
| Property | Value |
|---|---|
| Total height | 60 pt |
| Row height | 16 pt |
| Row padding | 4 pt |
| Bar max width | CW × 0.48 |
| Bar height | 8 pt |
| Bar track | BGCA, 3pt radius |
| Bar fill | Severity color at 0.85 alpha, min 4pt width |
| Glow dot | Circle at fill endpoint, severity color at 0.3 alpha, 5pt radius |
| Layout x-positions | Label: 0, Value: CW×0.12 + 10, Bar: CW×0.22, Band: CW×0.72 + 10 |
Dynamic color rules:
| Score Type | Thresholds |
|---|---|
| Severity | ≥0.75 → SC (red), ≥0.5 → SH (orange), else → SM (yellow) |
| Relevance | ≥0.6 → AE (green), ≥0.3 → AA (amber), else → T3 (muted) |
| Priority | ≥0.7 → SC (red), ≥0.5 → SH (orange), ≥0.3 → SM (yellow), else → T3 |
A thin colored bar at the top of each advisory card.
| Property | Value |
|---|---|
| Width | Full CW |
| Height | 4 pt |
| Corner radius | 2 pt |
| Color | Severity color of the advisory |
A category block displaying technology items as a bulleted list.
| Property | Value |
|---|---|
| Width | CW × 0.48 |
| Background | BGC, 5pt radius |
| Border | BS 0.3pt stroke |
| Header bar | 22pt height, category color fill, 5pt radius |
| Header text | Poppins-Medium 10pt, white, 10pt left offset |
| Item bullet | 2pt radius circle, category color, at (14, y+3) |
| Item text | Carlito 10pt, T2, at (22, y) |
| Item spacing | 16pt vertical |
Applied to every page via the page-template onPage hook. Light default: white page fill, a 2.5pt brand
gradient hairline at the very top, and a hairline-ruled footer (muted text + purple page number) — no dark
footer bar. The dark-fallback specifics below apply under --theme dark.
PAGE rectangle — #FFFFFF light · #07040B under --theme dark| Property | Value |
|---|---|
| Height | 26 pt |
| Background | GL (#1E1A2E) |
| Left text | Poppins 7pt, T3: TRANSILIENCE AI · Threat Intelligence Report · CONFIDENTIAL |
| Left offset | 20mm margin |
| Page number | Poppins-Bold 9pt, BP — right-aligned |
| Page label | Poppins 8pt, T2: Page — immediately left of number |
rgba(105, 65, 198, 0.12), positioned at x=0A custom Flowable rendering a polar threat radar.
| Property | Value |
|---|---|
| Canvas size | 300pt + 100pt width, 300pt + 60pt height |
| Center | (200, 180) |
| Max radius | 300 × 0.38 = 114 pt |
Concentric filled circles from max_r + 20 down to 0 (step −2), each with increasing alpha (0.03 → 0.05), color rgba(10, 5, 20, alpha).
4 dashed concentric rings at 25%, 50%, 75%, 100% of max radius.
| Ring | Fraction | Label | Label Color |
|---|---|---|---|
| Inner | 0.25 | CRITICAL | SC (#EF4444) |
| Mid-inner | 0.50 | HIGH | SH (#FB923C) |
| Mid-outer | 0.75 | MEDIUM | SM (#EAB308) |
| Outer | 1.00 | LOW | SL (#22C55E) |
rgba(105, 65, 198, 0.3), 0.5pt, dash pattern (3, 3)12 spokes at 30° intervals, representing attack surfaces:
Web Apps/API, Cloud/Infra, Network, Endpoints, Email, Mobile, IoT/OT, Data Storage, Identity, Third-Party, Physical, Social Eng.
rgba(105, 65, 198, 0.25), 0.3ptmax_r + 32 from centerrgba(140, 92, 230, 0.4), 0.4ptrgba(105, 65, 198, 0.04 × (16−r))Each threat plotted using theta_deg and radius_norm from data.
| Severity | RGB | Point radius |
|---|---|---|
| Critical | (0.937, 0.267, 0.267) | 7 pt |
| High | (0.984, 0.573, 0.235) | 5.5 pt |
| Medium | (0.918, 0.702, 0.031) | 4.5 pt |
| Low | (0.133, 0.773, 0.369) | 3.5 pt |
Three-layer rendering per point:
Cards are returned as flat lists of Flowables (not wrapped in CardBox), enabling ReportLab page-split. Between cards: CondPageBreak(220) — only breaks if <220pt space remains.
| # | Section | Spacing After |
|---|---|---|
| 1 | AccentBar (4pt, severity color) | 8pt |
| 2 | Title — #{serial} [{SEVERITY}] {title} | 2pt (spaceAfter) |
| 3 | Metadata Row — pipe-separated: Source │ Surface │ Status │ First Seen | 2pt + 10pt gap |
| 4 | ScoreRow — 3 inline progress bars (60pt) | 12pt gap |
| 5 | Summary — justified body text | 4pt + 6pt gap |
| 6 | TECHNICAL DETAILS (conditional) — Tactics, Techniques, CVEs | 4pt per item + 6pt gap |
| 7 | IMPACT CONTEXT (always shown) — Industries, Regions, Assets | 4pt per item + 6pt gap |
| 7b | DETECTION EVIDENCE (conditional) — Techstack fingerprint matches | 3pt per item + 6pt gap |
| 8 | RELEVANCE ANALYSIS (conditional) — Bullet-point reasoning | 4pt per item + 4pt gap |
| 9 | Source Link — blue underlined URL | 0pt |
| 10 | Bottom Divider — GradientLine at CW×0.5, 1pt height | 8pt before |
Source: THREAT INTEL │ Surface: Endpoint / Email │ Status: NEW │ First Seen: 2026-02-24Labels in BPL (#8B5CF6), values in T2, separator: unicode │ (U+2502) with 4-space padding.
Source label mapping: threat → THREAT INTEL, product → PRODUCT VULN, breach → BREACH INTEL.
• {TechName} — {evidence_string}Tech name in T1 (white, bold), em-dash separator, evidence string in T2. Max 6 items per card.
| Header | Color |
|---|---|
| TECHNICAL DETAILS | BPL (#8B5CF6) |
| IMPACT CONTEXT | BPL (#8B5CF6) |
| DETECTION EVIDENCE | AE (#10B981) — green to visually distinguish |
| RELEVANCE ANALYSIS | BPL (#8B5CF6) |
| Element | Configuration |
|---|---|
| Logo row | 3-column table: [Transilience logo (55×22mm), spacer, Client logo (38×27mm)], row height 28mm |
| Gap | 26mm |
| Gradient separator | Full CW, 3pt height |
| Gap | 12mm |
| Title line 1 | "THREAT INTELLIGENCE" — ct style (Poppins-Bold 36pt, white) |
| Title line 2 | "REPORT" — ct style |
| Gap | 6mm |
| Client name | cc style (Poppins-Medium 18pt, BPL) |
| Gap | 4mm |
| Sub-separator | GradientLine CW×0.35, 2pt |
| Gap | 8mm |
| Metadata table | 6 rows, 2 columns (CW×0.3 label, CW×0.7 value) |
| Gap | 15mm |
| Confidentiality notice | Carlito-Italic 10pt, T3 |
| Label | Style |
|---|---|
| REPORT DATE | Poppins 10pt T3 → value Carlito 11pt T2 |
| CLASSIFICATION | Same |
| SECTOR | Same |
| REGION | Same |
| GENERATED BY | Same |
| REPORT ID | Same — format: TI-{CLIENT}-{YYYYMMDD} |
| Element | Style |
|---|---|
| Title | "TABLE OF CONTENTS" — h1 style |
| Divider | GradientLine full CW, 2pt |
| Gap | 8mm |
| Main entry | 3-column table: section number (Poppins-Bold 13pt BP, 35pt col), title (Poppins-Medium 10.5pt T1), page (Poppins-Bold 11pt T1, right-aligned, 40pt col) |
| Entry separator | 0.3pt GL line below |
| Sub-entry | Indented 15pt, Poppins 10pt, sub-number in T3, title in T2 |
Every numbered section follows this sequence:
SectionNumber(num) — decorative ghost number (38pt height)h1 style (Poppins-Bold 20pt)GradientLine(CW, 2) — full-width separatorSpacer(1, 4*mm) — breathing room| # | Section | Content Type |
|---|---|---|
| 01 | Executive Summary | MetricBox row + narrative + bulleted key findings |
| 02 | Threat Landscape Overview | Source distribution table + attack surface table |
| 03 | Threat Radar Visualization | RadarVisualization flowable + legend |
| 04 | Critical Severity Advisories | Advisory cards (PageBreak before section) |
| 05 | High Severity Advisories | Advisory cards (PageBreak before section) |
| 06 | Medium Severity Advisories | Advisory cards (PageBreak before section) |
| 07 | Attack Surface Analysis | Digital footprint table + subdomain inventory |
| 08 | Asset Inventory & Crown Jewels | Crown jewel CardBoxes + full inventory table |
| 09 | Technology Stack Intelligence | TechStackBlocks + security headers table |
| 10 | Security Posture Assessment | Status CardBoxes (6 items) |
| 11 | Strategic Recommendations | Tiered CardBoxes (Immediate/Short/Medium-term) |
| 12 | Methodology & Data Sources | Pipeline CardBoxes + scoring methodology + evidence table |
| Context | Spacing |
|---|---|
| After section title | 8pt (h1 spaceAfter) |
| After gradient divider | 4mm (≈11.3pt) |
| Between card sections (within) | 4pt |
| Between card section groups | 6pt |
| After metadata row → scores | 10pt |
| After scores → summary | 12pt |
| After summary → tech details | 6pt |
| Between advisory cards | CondPageBreak(220) |
| Between severity sections | PageBreak() |
| Before Evidence Collection | PageBreak() |
| Property | Value |
|---|---|
| Top padding | 4–5 pt |
| Bottom padding | 4–5 pt |
| Left padding | 6–8 pt |
| Row separator | 0.5pt GL line |
Technology evidence is extracted from techstack_report.json and indexed by keyword. The extraction traverses:
technologies.frontend[] — name, evidence[].finding, evidence[].detailstechnologies.backend[] — web servers, frameworks, CMS, languagestechnologies.infrastructure[] — DNS, CDN providerstechnologies.security[] — WAF, certificates, headers, email securitytechnologies.third_party[] — analytics, collaboration toolsEach evidence item is indexed under multiple keywords derived from the technology name fragments. Alias mappings expand coverage (e.g., email → proofpoint, microsoft, dmarc).
get_threat_evidence(threat) scans the threat's title, summary, and threat_name against the keyword index. Returns up to 6 (tech_name, evidence_string) tuples. Deduplication by {tech_name}:{evidence} key.
All threats sorted by: severity rank descending (critical=4, high=3, medium=2, low=1), then prioritization_score descending. Split into four lists for section rendering.
| Character | Code | Usage |
|---|---|---|
│ | U+2502 | Pipe separator in metadata rows |
• | U+2022 | Bullet point in relevance analysis, detection evidence |
— | U+2014 | Em-dash in section headers, posture items, evidence items |
· | U+00B7 | Middle dot in footer text |
✔ | U+2714 | Reserved (previously used in evidence, now removed) |
• | HTML entity | Bullet in executive summary key findings |
| Transition | Method |
|---|---|
| Between advisories (same severity) | CondPageBreak(220) — break only if <220pt remains |
| Between severity sections | PageBreak() — always new page |
| Before Evidence Collection | PageBreak() — separate last page |
Advisory cards return flat list[Flowable] instead of monolithic CardBox. This allows ReportLab's frame to split cards across page boundaries at any Paragraph/Spacer seam, eliminating blank pages.
The design system is client-agnostic. Customized per client:
All visual elements (colors, typography, spacing, components) remain identical across clients.
© transilienceai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 11 other files in formats/transilience-report-style of transilienceai/communitytools.
Open the folder on GitHubat commit 95fdc12
Transilience Report Style next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Transilience Report Style this skilltransilienceai/communitytools | 563 | — | ~6.3k | Automated safety check: Pass | MIT | |
| Pro Report Builderthatrebeccarae/claude-marketing | 161 | — | ~3.6k | Automated safety check: Pass | MIT | |
| HTML Report Builderthatrebeccarae/claude-marketing | 161 | — | ~1.2k | Automated safety check: Pass | MIT | |
| Minimax PDFpoco-ai/poco-claw | 1.4k | 6 repos | ~2.1k | Automated safety check: Pass | MIT | |
| Impeccablebestofjs/bestofjs | 3.1k | 26 repos | ~2.6k | Automated safety check: Pass | MIT | |
| Design SystemOhh-889/skyroc | 795 | 11 repos | ~1.7k | Automated safety check: Pass | MIT |
thatrebeccarae/claude-marketing
Create polished HTML technical reports and multi-page documents for consulting deliverables.
thatrebeccarae/claude-marketing
Create polished HTML technical reports and multi-page documents for consulting deliverables.
poco-ai/poco-claw
A skill your agent uses when visual quality and design identity matter for a PDF.
bestofjs/bestofjs
A skill your agent uses when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a…
Ohh-889/skyroc
Token architecture, component specifications, and slide generation.
scalar/scalar
Scalar's design system — design tokens, theming (@scalar/themes), CSS variables, and the @scalar/components library.
transilienceai/communitytools
Digital forensics and incident response - Windows event log analysis, PCAP forensics, filesystem artifact analysis, AD attack detection, and timeline correlation.
transilienceai/communitytools
GitHub workflow automation — branching, committing, pushing, pull requests, issues, and code review.
transilienceai/communitytools
Automated PCI Secure Software Standard (SSS) v2.0 readiness gap-assessment of an application from its source code and documentation.
transilienceai/communitytools
Generate ONE strong password and apply it to each referenced file (PDF, Word, Excel, PowerPoint, or any type).
transilienceai/communitytools
Skill creation, update and management — generates skill directory structure, validates against best practices, enforces line count limits.
transilienceai/communitytools
Security-focused source code review and SAST. An agent skill from transilienceai/communitytools.
Works with
Categories
Threat Intelligence Report Design System — ReportLab-based PDF generation for A4 reports with Transilience branding, typography, and layout standards. Transilience Report Style is an agent skill from transilienceai/communitytools. Threat Intelligence Report Design System — ReportLab-based PDF generation for A4 reports with Transilience branding, typography, and layout standards.
Transilience Report Style fits situations like: tasks that involve Typography; tasks that involve OSINT; tasks that involve PDF.
Run `npx skills add transilienceai/communitytools --skill transilience-report-style -a claude-code`. Or copy the skill folder (formats/transilience-report-style in transilienceai/communitytools) into .claude/skills/transilience-report-style in your project. Claude Code loads it when a task matches its description.
Run `npx skills add transilienceai/communitytools --skill transilience-report-style -a codex`. Or copy the skill folder (formats/transilience-report-style in transilienceai/communitytools) into .agents/skills/transilience-report-style in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add transilienceai/communitytools --skill transilience-report-style -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/transilience-report-style, .gemini/skills/transilience-report-style, .github/skills/transilience-report-style and .opencode/skills/transilience-report-style in your project.
SKILL.md names no scripts, command-line tools or credentials: Transilience Report Style is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Transilience Report Style is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 6.3k tokens (SKILL.md is roughly 25k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Transilience Report Style: Pro Report Builder (thatrebeccarae/claude-marketing, 161 stars), HTML Report Builder (thatrebeccarae/claude-marketing, 161 stars), Minimax PDF (poco-ai/poco-claw, 1.4k stars) and Impeccable (bestofjs/bestofjs, 3.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
transilienceai (a GitHub organization) maintains it in transilienceai/communitytools, which has 563 GitHub stars. The repository holds 35 skills in this directory. The repository was last updated on July 29, 2026.
Source: transilienceai/communitytools on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.