evidence-ui — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited evidence-ui (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Invoke when the user asks to:
Evidence.dev provides a set of built-in UI components for layout, navigation, content organization, and print formatting. All components are used directly in .md pages as HTML-style tags. No imports required.
| Component | Purpose | Minimal syntax |
|---|---|---|
Accordion / AccordionItem | Collapsible sections | <Accordion><AccordionItem title="X">content</AccordionItem></Accordion> |
Alert | Styled message banner | <Alert>message</Alert> |
BigLink | Large styled navigation link | <BigLink url="/path">Label</BigLink> |
Details | Single collapsible section | <Details title="X">content</Details> |
DownloadData | CSV download button for a query | <DownloadData data={query_name}/> |
Embed | iframe / video embed | <Embed url="https://..."/> |
Grid | Multi-column layout | <Grid cols=2>items</Grid> |
Image | Responsive image with controls | <Image url="https://..."/> |
Info | Inline tooltip icon | <Info description="tooltip text"/> |
LastRefreshed | Data freshness timestamp | <LastRefreshed/> |
Link | Inline styled link | <Link url="https://..." label="text"/> |
LinkButton | Link styled as a button | <LinkButton url="/path">Label</LinkButton> |
Modal | Pop-up dialog triggered by a button | <Modal buttonText="Open" title="Title">content</Modal> |
Note | Small/muted supplemental text | <Note>footnote text</Note> |
Tabs / Tab | Tabbed content panes | <Tabs><Tab label="X">content</Tab></Tabs> |
LineBreak | Explicit line break | <LineBreak/> |
PageBreak | Print page break | <PageBreak/> |
PrintGroup | Keep items on same print page | <PrintGroup>items</PrintGroup> |
Collapsible section group. Multiple items can be open simultaneously by default. Use single to allow only one open at a time.
<Accordion>
<AccordionItem title="Revenue Definition">
Revenue is recognized when the subscription renews.
</AccordionItem>
<AccordionItem title="CAC Definition">
Customer Acquisition Cost = total sales & marketing spend / new customers.
</AccordionItem>
</Accordion>Single-open mode:
<Accordion single>
<AccordionItem title="Q1">...</AccordionItem>
<AccordionItem title="Q2">...</AccordionItem>
</Accordion>Custom title slot (embed a Value component in the header):
<AccordionItem title="Growth">
<span slot='title'>Growth <Value data={growth} fmt=pct1 /></span>
Body content here.
</AccordionItem>Key props — `Accordion`
single — only one item open at a timeclass — Tailwind classes on the accordion wrapperKey props — `AccordionItem`
title (required) — header textdescription — adds an info icon with tooltipclass — Tailwind classes on the itemInline message banner. Default style is neutral. Use status for semantic color.
<Alert status="warning">
Data for December is preliminary and subject to revision.
</Alert>
<Alert status="negative">
Pipeline sync failed — figures may be stale.
</Alert>status options: info | positive | warning | negative
Large, styled card-style link. Use for navigation sections or prominent CTAs.
<BigLink url="/sales/performance">Sales Performance Dashboard</BigLink>
<BigLink url="https://docs.evidence.dev">Documentation</BigLink>url (required) — internal path or full URLSingle collapsible section. Simpler than Accordion — no grouping. Expands all content on print by default.
<Details title="Metric Definitions">
**ARR** — Annualised Recurring Revenue, calculated from active subscriptions.
**NRR** — Net Revenue Retention, includes expansion and churn.
</Details>Start expanded:
<Details title="Methodology" open=true>
content
</Details>Key props
title — label shown next to the toggle icon (default: "Details")open — true / false, default falseprintShowAll — true / false, default true (expands on print)Renders a "Download" link that exports a query result as CSV. Not shown on mobile.
<DownloadData data={orders}/>
<DownloadData data={orders} text="Export CSV" queryID=orders_export/>Key props
data (required) — query result variable {query_name}text — button label (default: "Download")queryID — prefix for the downloaded filenamedisplay — true / false (toggle visibility, e.g. from hover state)Renders an iframe. Useful for YouTube, Loom, Metabase, etc.
<Embed
url="https://www.youtube.com/embed/VIDEO_ID"
title="Q4 Review Recording"
/>Custom size, centered, no border:
<Embed
url="https://www.youtube.com/embed/VIDEO_ID"
title="Demo"
width=800
height=450
border=false
/>Key props
url (required) — embeddable URL (use embed/share URLs, not watch URLs)title — accessibility labelwidth — pixels (default: 100%)height — pixels (default: 400)border — true / false (default: true)class — Tailwind classes on the wrapperArranges direct children in a responsive column grid. Collapses to vertical on small screens. Wrap multiple items that should share one cell in a <Group>.
<Grid cols=2>
<LineChart data={sales} x=month y=revenue/>
<BarChart data={sales} x=month y=orders/>
</Grid>Mixed content in one cell using Group:
<Grid cols=3>
<BigValue data={kpis} value=revenue/>
<BigValue data={kpis} value=orders/>
<Group>
Regional breakdown
<DataTable data={by_region}/>
</Group>
</Grid>Key props
cols — 1 | 2 | 3 | 4 | 5 | 6 (default: 2)gapSize — none | sm | md | lg (default: md)Responsive image with alignment, sizing, and border controls. For simple cases, standard markdown  also works.
<Image
url="https://example.com/logo.png"
description="Company logo"
height=80
align="left"
/>With border and padding:
<Image
url="https://example.com/screenshot.png"
description="Dashboard screenshot"
height=400
border=true
class="p-4"
/>Key props
url (required)description — alt text for accessibilitywidth / height — pixelsalign — center | left | right (default: center)border — true / false (default: false)class — Tailwind classesInline tooltip icon. Can be used standalone or is built into other components via their description prop.
Revenue is net of refunds <Info description="Refunds processed within 30 days are excluded"/>With theme color:
<Info description="Calculated using trailing 12 months" color="primary"/>Key props
description (required) — tooltip textcolor — any valid color or theme token (default: base-content-muted)size — icon size number (default: 4)className — custom class on the trigger elementShows how long ago the data was last built. Useful in page footers.
<LastRefreshed/>Custom prefix:
<LastRefreshed prefix="Data last updated"/>Key props
prefix — text before the timestamp (default: "Last refreshed")printShowDate — true / false (default: true — shows full date on print instead of "X hours ago")dateFmt — date format string when printShowDate=trueInline hyperlink component. Use when you need to control tab behavior or apply custom styles. Standard markdown [text](url) also works for basic links.
<Link url="https://github.com/evidence-dev/evidence" label="View on GitHub"/>
<Link url="https://example.com" label="Opens in new tab" newTab=true/>Key props
url (required)label — link text (default: "Click here")newTab — true / false (default: false)class — Tailwind classesRenders a link styled as a button. Use for primary call-to-action navigation.
<LinkButton url="/reports/executive-summary">
View Executive Summary
</LinkButton>url (required) — internal path or full URLPop-up dialog with a trigger button. Supports markdown and embedded components inside the body.
<Modal title="Methodology" buttonText="How is this calculated?">
**ARR** is calculated from all active subscriptions at month-end.
Churned accounts are excluded after the 5th of the following month.
</Modal>With a chart inside:
<Modal title="Monthly Trend" buttonText="See Chart">
<LineChart data={monthly} x=month y=revenue/>
</Modal>Key props
buttonText (required) — label on the trigger buttontitle — heading inside the modalopen — true / false (default: false)Note: leave a blank line after the opening tag when using markdown inside the body.
Small, muted text for footnotes, caveats, or source attribution.
<Note>
Figures exclude inter-company transactions. Source: Finance ERP, extracted 2024-01-31.
</Note>Custom color using Tailwind:
<Note class="text-negative">
This metric is currently under review and may change.
</Note>class — Tailwind classes (use theme tokens like text-positive, text-negative, text-warning)Organizes content into switchable panes. Each Tab requires a label.
<Tabs>
<Tab label="Overview">
Summary content here.
</Tab>
<Tab label="Detail">
<DataTable data={detail_rows}/>
</Tab>
<Tab label="Definitions">
<Details title="Metrics">definitions...</Details>
</Tab>
</Tabs>Key props — `Tabs`
id — string; when set, selected tab is persisted in the URL (shareable)color — active tab color (hex, rgb, hsl, or theme token; default: base-content)fullWidth — true / false, tabs stretch to full page widthbackground — true / false, adds background fill to active tabKey props — `Tab`
label (required) — tab header textid — unique id (only needed if two tabs share the same label)printShowAll — true / false (default: true — all tabs printed, not just active)description — tooltip on the tab headerThree components control PDF/print layout. They have no visual effect on screen (except LineBreak).
LineBreak — inserts a line break in both UI and print:
Revenue <LineBreak/> Costlines — number of breaks (default: 1)PageBreak — forces a new page when printing/exporting PDF:
<LineChart data={q1} x=month y=revenue/>
<PageBreak/>
<LineChart data={q2} x=month y=revenue/>PrintGroup — keeps wrapped content together on the same print page; optionally hides content from print:
<PrintGroup>
<Heatmap data={channel_item} x=channel y=item value=orders/>
<Heatmap data={channel_item} x=channel y=item value=revenue/>
</PrintGroup>Hide from print only:
<PrintGroup hidden=true>
<BarChart data={experimental} x=month y=value/>
</PrintGroup>hidden — true / false (default: false); content is hidden in print/PDF but visible on screen`<Accordion>`
| Prop | Type | Default | Description |
|---|---|---|---|
single | boolean | false | Only one item open at a time |
class | string | — | Tailwind classes on the wrapper |
`<AccordionItem>`
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
title | string | yes | — | Header text |
description | string | — | — | Info icon with tooltip on hover |
class | string | — | — | Tailwind classes on the item |
Slot: use <span slot='title'> inside AccordionItem to embed components (e.g. Value) in the header.
| Prop | Options | Description |
|---|---|---|
status | info / positive / warning / negative | Color variant; omit for default neutral |
description | string | Info icon with tooltip |
| Prop | Type | Required | Description |
|---|---|---|---|
url | string | yes | Internal path or full URL |
| Prop | Type | Default | Description |
|---|---|---|---|
title | string | "Details" | Toggle label |
open | boolean | false | Expanded by default |
printShowAll | boolean | true | Expand on print/PDF |
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
data | query result | yes | — | Query variable {name} |
text | string | — | "Download" | Button label |
queryID | string | — | "evidence_download" | CSV filename prefix |
display | boolean | — | true | Control visibility |
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
url | string | yes | — | Embeddable URL |
title | string | — | "" | Accessibility label |
width | number | — | 100% | Width in pixels |
height | number | — | 400 | Height in pixels |
border | boolean | — | true | Show border |
class | string | — | — | Tailwind classes on wrapper |
| Prop | Options | Default | Description |
|---|---|---|---|
cols | 1–6 | 2 | Number of columns |
gapSize | none / sm / md / lg | md | Gap between cells |
Use <Group> (no props) to group multiple items into a single grid cell.
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
url | string | yes | — | Image URL |
description | string | — | "" | Alt text |
width | number | — | — | Width in pixels |
height | number | — | — | Height in pixels |
align | center / left / right | — | center | Alignment |
border | boolean | — | false | Show border |
class | string | — | — | Tailwind classes |
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
description | string | yes | — | Tooltip text |
color | string | — | base-content-muted | Icon color (hex, token) |
size | number | — | 4 | Icon size |
className | string | — | — | Classes on trigger element |
| Prop | Type | Default | Description |
|---|---|---|---|
prefix | string | "Last refreshed" | Text before timestamp |
printShowDate | boolean | true | Show full date on print |
dateFmt | string | — | Format for print date (Evidence format string) |
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
url | string | yes | — | Destination URL |
label | string | — | "Click here" | Link text |
newTab | boolean | — | false | Open in new tab |
class | string | — | — | Tailwind classes |
| Prop | Type | Required | Description |
|---|---|---|---|
url | string | yes | Destination URL (internal or external) |
Content between tags becomes the button label.
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
buttonText | string | yes | — | Trigger button label |
title | string | — | — | Heading inside the modal |
open | boolean | — | false | Start open |
| Prop | Type | Description |
|---|---|---|
class | string | Tailwind classes (e.g. text-negative, text-warning) |
`<Tabs>`
| Prop | Type | Default | Description |
|---|---|---|---|
id | string | — | Persists selected tab in URL when set |
color | string | base-content | Active tab color (hex / theme token) |
fullWidth | boolean | false | Tabs span full page width |
background | boolean | false | Background fill on active tab |
`<Tab>`
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
label | string | yes | — | Tab header text |
id | string | — | — | Override id (when labels are duplicated) |
printShowAll | boolean | — | true | Show all tabs in print/PDF |
description | string | — | — | Tooltip on tab header |
| Prop | Options | Default | Description |
|---|---|---|---|
hidden | true / false | false | Hides content from print/PDF only |
LineBreak: lines (number, default 1)
PageBreak: no props.
<Tabs id="revenue-tabs">
<Tab label="Summary">
<Grid cols=3>
<BigValue data={kpis} value=arr title="ARR"/>
<BigValue data={kpis} value=nrr title="NRR"/>
<BigValue data={kpis} value=churn title="Churn Rate"/>
</Grid>
<LineChart data={monthly_arr} x=month y=arr/>
<DownloadData data={monthly_arr} text="Export ARR data" queryID=arr_export/>
</Tab>
<Tab label="By Region">
<DataTable data={by_region}/>
<DownloadData data={by_region} queryID=region_export/>
</Tab>
</Tabs><Accordion single>
<AccordionItem title="North America">
<LineChart data={na_trend} x=month y=revenue/>
</AccordionItem>
<AccordionItem title="EMEA">
<LineChart data={emea_trend} x=month y=revenue/>
</AccordionItem>
</Accordion><Alert status="warning">
December figures are preliminary. Final numbers available by Jan 15.
</Alert>
<Details title="What changed?">
The December close process was delayed due to a system migration.
Numbers will be restated once the ERP sync is complete.
</Details>## Executive Summary
<PrintGroup>
<Grid cols=3>
<BigValue data={kpis} value=arr/>
<BigValue data={kpis} value=nrr/>
<BigValue data={kpis} value=new_logos/>
</Grid>
</PrintGroup>
<PageBreak/>
## Regional Breakdown
<PrintGroup>
<BarChart data={by_region} x=region y=revenue/>
<DataTable data={by_region}/>
</PrintGroup>
<LastRefreshed prefix="Report generated"/>Revenue grew 23% YoY <Info description="Compared to same period prior year, constant currency"/>
<Modal title="Revenue Recognition Policy" buttonText="Full methodology">
Revenue is recognized at the point of subscription renewal.
**Exclusions:**
- Intercompany transactions
- Refunds processed within 30 days
</Modal>
<Note>
All figures in USD thousands unless otherwise stated. Source: Salesforce + Stripe reconciliation.
</Note>## Dashboards
<Grid cols=2>
<BigLink url="/sales/pipeline">Pipeline Overview</BigLink>
<BigLink url="/finance/p-and-l">P&L Dashboard</BigLink>
<BigLink url="/marketing/campaigns">Campaign Performance</BigLink>
<BigLink url="/ops/capacity">Capacity Planning</BigLink>
</Grid>
<LineBreak lines=2/>
<LinkButton url="/admin/data-sources">Manage Data Sources</LinkButton>Safe — writes only to .md page files.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.