> Use this skill when the user wants a polished, shareable, source-grounded, self-contained HTML artifact in the Birch visual system for engineering, product, planning, review, status, incident, process, codebase, data, or benchmark communication. Trigger for one-pagers, visual summaries, reports, dashboards, module/process explainers, implementation plans, design-direction comparisons, PR/change writeups, findings-first code reviews, incident/status reports, briefing decks, flow diagrams, numeric/data briefs, model/run/token/ time/cost reports, and design-system references. Do not use it for editing production web apps, React/Vue components, or ordinary chat answers.
npx skills add https://github.com/huggingface/research-agent --skill birch-html
Create one complete, locally opening Birch HTML artifact. Optimize for complete
HTML, preserved Birch CSS placeholder, source-grounded claims, 390px mobile
safety, strict component contracts, and minimal page-local CSS.
<style data-birch-system>__BIRCH_SYSTEM_CSS__</style>.
<main class="page stack" data-gap="lg"> as the outer visible shell.body, .container, .report, or .dashboard the visible page shell.
particular, avoid custom path/helper classes such as .file-path and avoid
variables such as --color-*, --size-*, --s-*, --bg-alt, or
--fg-muted unless they are already defined by Birch.
decorative background images, or custom dashboard skins.
and for body/page backgrounds (for example linear-gradient,
radial-gradient, or conic-gradient). Use flat Birch token surfaces instead.
<pre> or code blocks.Represent patch lines with .diff-row; the only literal +/- marker should
be inside <span class="mark">.
notes, and local links before writing claims.
sections, and chart intent.
change the result; otherwise proceed and label assumptions.
numeric-data, code-review, pr-change-writeup,implementation-plan, module-explainer, process-explainer,
design-directions, status-incident-report, flow-diagram, slide-deck,
benchmark-comparison, or design-system-reference.
kebab-case .html file in the current directory.
skill/resources/template.html; replace body content only.Then run uv run skill/scripts/finish_birch_html.py <output.html>.
.page,Birch CSS placeholder/embedded CSS, closing </html>, no network assets, no
unknown classes/variables, strict children, wrapped long content, no 390px
overflow, and no raw patch marker lines. If available run:
uv run --with pillow python skill/scripts/check_birch_renderings.py --artifact <output.html>.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Clear artifact title</title>
<style data-birch-system>__BIRCH_SYSTEM_CSS__</style>
<style>/* Optional tiny wrapping/SVG fixes only. Prefer deleted. */</style>
</head>
<body>
<main class="page stack" data-gap="lg">
<header class="stack" data-gap="sm">
<div class="eyebrow">Review artifact</div>
<h1>Clear artifact title</h1>
<p class="lede">One or two source-grounded sentences.</p>
</header>
<section class="section stack" data-gap="lg">...</section>
</main>
</body>
</html>
the claim they support.
“source not present”.
support. Label assumptions.
Build with primitives, not custom boxes: .section, .section-head, .stack,
.cluster, .card, .panel, .auto-grid, .section-rail,
.reference-panel, .chart-panel, .chart-svg, .chart-caption,
.stat-card, .stat-value, .metric-list, .metric-row,
.numeric-table-wrap, .numeric-table, .flow-list, .flow-step,
.code-block, .diff, .checklist, .plain-list, .insight-list,
.takeaway-list, .chip, .caption, .lede, .scroll-x.
Use semantic primitives in every artifact: sections plus cards, lists, tables,
flow steps, diff rows, metric lists, or chart panels as relevant.
Page-local CSS: ideally none; hard target under 30 lines / 1.5 KB. Use it only
for page-specific SVG sizing, chart sizing, tiny gaps, or wrapping. Do not
recreate shells/cards/grids/rails/tables/typography/badges/meters, redefine
Birch primitives, or use linear-gradient, radial-gradient, or
conic-gradient. Put local CSS after the Birch placeholder/link. Use only
Birch variables (--bg, --surface, --text, --border-color, --accent,
--success, --danger, --info, --space-1…--space-8, and documented
color tokens).
Design for 390px. Rows, chips, stat values, code, tables, and SVGs must wrap or
scroll inside their own container without page-level horizontal overflow.
custom grid/flex and stack it.
symbols must wrap or live inside .scroll-x.
data-wrap="true" on every long .code-block and .diff.<code>, wrapped blocks, or short chips.
<h1> short; move long nouns to lede/captions.<div class="numeric-table-wrap"><table class="numeric-table">...</table></div>.
KPI cards. Avoid all-in-one tables with long prose cells.
.numeric-table code, .numeric-table .note { white-space: normal; overflow-wrap: anywhere; word-break: break-word; }
columns unless the table is wrapped and those cells can break anywhere; prefer
stacked cards, lists, or .code-block data-wrap="true" for code-review
evidence.
.scroll-x only for truly wide comparisons; otherwise reduce columns..metric-row values; prefer KPI cards, lists, orcompact metric CSS vars.
.section-rail: main content first, then <aside class="reference-panel">..split for plans, source-vs-assumption blocks, or columns with headingson both sides; use .section-rail or stacked cards.
.auto-grid with style="--grid-min: 160px".compact hero, KPI strip, and chart/ranking/table start.
or ranking, a numeric table, and source/caveat captions.
Never put raw patch text directly in HTML source or code blocks. No generated
source line may begin with +, -, or @@ to represent a patch. Use
.diff-row with exactly three direct children: .ln, .mark, .code; mark
text is +, -, or one space; added rows use .add/data-kind="add",
deleted rows use .del/data-kind="del".
<div class="diff" data-wrap="true">
<div class="diff-row add"><span class="ln">12</span><span class="mark">+</span><span class="code">added code</span></div>
</div>
Every .flow-step has exactly two direct children: .flow-num, then one
content wrapper. Put titles, paragraphs, lists, and code inside the wrapper.
<li class="flow-step"><span class="flow-num">1</span><div class="stack" data-gap="sm"><h3 class="flow-title">Read inputs</h3><p class="flow-detail">Detail.</p></div></li>
Use .metric-row only for label + meter + short value; not for metadata,
timelines, work items, prose, or key/value rows. It has exactly three direct
children: .caption, .meter, code. Do not add extra children or .metric
inside .metric-row. Long labels/values belong in cards, lists, or tables.
<div class="metric-row"><span class="caption">Pass rate</span><div class="meter"><span style="--value: 98%"></span></div><code>0.98</code></div>
.checklist: pass/done/validated items only; .plain-list: neutral bullets;.insight-list/.takeaway-list: key observations.
<li> has exactly one direct wrapper child.<th> and <td> cells need class="metric" so headers and values align..panel.chart-panel.stack; usually wrap the SVG with.chart-svg and add .chart-caption.
to captions/lists.
path/polyline setsfill="none", a Birch-colored stroke, and restrained stroke-width.
a following .flow-list.
scripts/birch_mpl.py; run a temporary driver as needed, inline SVG in a
chart panel, and pair with exact values in narrow .numeric-tables.
Module/runtime explainers: short transformation title, caveat paragraph, SVG
flow of 5–8 nodes, caption citing source files/functions, then ordered
.flow-list file tour or runtime walkthrough. Prefer flow steps, cards, and
captions over dense tables.
Numeric/benchmark reports: inspect schema and rows; use KPI cards for headline
counts/totals/best/worst/pass/fail/cost/time; use valid .metric-list only for
true progress/ranking values; include charts when they clarify tradeoffs; pair
charts with exact values and source/caveat captions.
Take huggingface/birch-html from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.