Home / All Skills / Docs & Knowledge / finance-report
Docs & Knowledge · nexu-io/html-anything

finance-report

Masthead + KPIs + Revenue/Burn Charts + P&L Table + Highlights + Outlook

L1 Basic · Source registration onlyV1 Commit-PinnedDual-pass Audit
Author nexu-ioGitHub nexu-io/html-anything ↗Stars 8827License Apache-2.0(仓库根 LICENSE;GitHub API spdx_id=Apache-2.0)Commit 553ed98c28
Control levels describe skill capabilities and suggested control measures; they do not represent quality or safety certifications, nor do they dictate usability. Usage decisions rest entirely with users and administrators. Different agent hosts apply varying constraints; do not assume hosts provide automatic protection. Third-party skill copyrights belong to their original authors. Use at your own risk.

1How It Works & Mechanism

This skill is not an executable program, but a prompt injected into the local coding-agent CLI: the host takes the SKILL.md body, prepends a global shared design instruction, appends user content, and combines them into a single prompt sent to the authenticated agent, capturing the agent's stdout as HTML.

next/src/lib/templates/shared.ts
【输入格式】: ${opts.format} 【用户内容】: ${opts.content}
Prompt Assembly Template = Shared Instructions → Skill Body → Input Format → User Content; the web frontend /api/convert uses the exact same function: prompt = assemblePrompt({ body: skill.body, content, format });

The shared instruction layer (which does not belong to any single skill, but governs every template) mandates that the output must be a 'self-contained single-file HTML' and strictly forbids the agent from using file system tools like Write/Edit/Bash; the HTML is streamed directly as the conversation body.

next/src/lib/templates/shared.ts
- **禁止使用 Write / Edit / MultiEdit / Bash / Create / 任何文件系统工具**。不要把 HTML 写到任何 \`.html\` 文件里。前端直接捕获你的 stdout 文本, 文件落盘由前端负责。
This establishes the capability boundary of this batch of skills: outputs are purely text, with file persistence and rendering handled by the host frontend; this restriction is a prompt soft constraint, not a sandbox hard isolation.

Outside SKILL.md, there is also a 'content-driven quantity' override rule: any page, frame, or card count written in the template is treated as a reference minimum, with the actual quantity determined by user content—preventing the agent from compressing user content to match template numbers.

next/src/lib/templates/shared.ts
- 模板只定义"可用版面 / 风格 / 配色 / 字体 / 组件库", **不定义** slide / 帧 / 卡片 / section 的数量。
This is especially critical for frame-* single-frame templates: it defines layout descriptions in templates as a 'reusable layout pool' rather than an upper output limit.

The loading convention is 'one skill = one directory': SKILL.md (YAML frontmatter for the selector + body as the template prompt), with optional example.md (sample input) and example.html (ready-to-open preview sample); adding a new template only requires adding a directory without modifying TS code.

next/src/lib/templates/loader.ts
* SKILL.md — frontmatter (id, scenario, tags, …) + prompt body * example.md — (optional) sample input content * example.html — (optional) pre-rendered preview, shown inline in the picker
The loader's loadSkillFromDir reads only these three types of files and provides no other asset loading channels—the second pass checks the asset reachability of this skill accordingly.

The selection pipeline (CLI side) is a three-stage funnel: strong keyword signal (2 points per matched word, threshold of 3) → fallback to tags/scenario scoring → if still uncertain, sending the first 800 characters of user content to the local agent for a one-sentence classification.

cli/src/skills-matcher.ts
const CONFIDENCE_THRESHOLD = 3;
The original prompt for the AI fallback: const prompt = `Please describe in one sentence (no more than 15 words) what type of document the following content looks most like; answer with only the type name:`

The preview pipeline is independent of generation: /api/templates/<id>/preview returns example.html verbatim as text/html to an iframe; the frontend iframe uses sandbox="allow-scripts allow-same-origin".

next/src/components/preview-pane.tsx
sandbox="allow-scripts allow-same-origin"
Route annotation: * Returns the skill's `example.html` verbatim so it can be loaded into an (Host-side trade-off: under the allow-scripts + allow-same-origin combination, scripts in the preview page can strip the sandbox themselves).

The template is a pure skeleton (22 lines in total): it organizes financial materials into a single-page report using 6 fixed layout sections—Masthead + 4 hero KPIs, two charts for revenue and burn, a P&L summary table, 5 top-line highlights, an Outlook paragraph, and a collapsible Methodology section.

next/src/lib/templates/skills/finance-report/SKILL.md
【布局】 - Masthead (公司 + Q + 报告标题) + 4 个 hero KPI - Revenue chart + Burn chart (Chart.js / ECharts) - P&L 概要表 (zebra + sticky header) - Top-line highlights (5 条 bullet) - Outlook 段落 - Methodology 折叠区
The 6-section skeleton is the most minimalist in this batch, leaving style, palette, and typography entirely to the shared instruction layer.

The intent is compressed into one sentence: a financial one-page report featuring numbers + charts + written insights—demanding both quantitative layout and narrative interpretation rather than a plain table.

next/src/lib/templates/skills/finance-report/SKILL.md
【意图】财务向单页报告, 数字 + 图表 + 文字洞察。
One-sentence intent: numbers + charts + written insights; lacking any of the three constitutes a failure.

Layout details provide concrete implementation specifications: the P&L table requires zebra striping + sticky headers (ensuring long tables remain scrollable and readable).

next/src/lib/templates/skills/finance-report/SKILL.md
- P&L 概要表 (zebra + sticky header)
Sticky headers + zebra striping are readability details for long tables, categorized as hard layout-level requirements.

The above-the-fold KPI count is strictly fixed at 4 hero KPIs, co-located with the Masthead (Company + Quarter + Report Title), ensuring that opening it immediately answers 'which company, which quarter, and the four key metrics'.

next/src/lib/templates/skills/finance-report/SKILL.md
- Masthead (公司 + Q + 报告标题) + 4 个 hero KPI
Four above-the-fold metrics + company quarter title align with the financial reader's habit of reading downward from the conclusions.

This skill does not have an example.md, and the preview sample example.html is entirely self-contained: no external URLs, no <script>, charts are hand-drawn using CSS/SVG, and typography relies on local serif font stacks.

next/src/lib/templates/skills/finance-report/example.html
--display: 'Iowan Old Style', 'Charter', 'Iowan', Georgia, serif;
Zero external links in the sample page demonstrates that this layout category can function reliably without CDN dependencies.

2Core Capabilities

01Standard financial report above-the-fold: Masthead (company + quarter + title) + 4 hero KPIs
02Dual chart slots for revenue and burn (Chart.js / ECharts)
03P&L summary table: zebra striping + sticky header
045 top-line highlights section
05Outlook forward-looking paragraph
06Collapsible Methodology section (traceable definitions/accounting bases)
07Selector keywords: 财报 / finance report / 财务报表 / 年报 / 季度财报 / 利润表 / 资产负债表

3External Dependencies

KindDependency / Endpoint
networkTailwind 与 Google Fonts 由共享指令层强制(本模板 SKILL.md 未提任何 CDN;官方示例页零外链)
packageChart.js / ECharts(SKILL.md 指定的图表方案;示例页未使用,改为手写 SVG/CSS)

4Recommended Governance & Evidence

Suggested Controls for Safe Operation
For Agent Runtime
Can be auto-loaded
For Administrators
Register source and version
Evidence & Triggers (File Paths & Excerpts)
  • SKILL.md: Pure prompt instructions and rule text, without script execution or external impact
Audit Notes: . The evaluation target is this skill's own directory (criteria: what actually happens when executed according to SKILL.md): SKILL.md consists of pure instruction text, and the accompanying example.md/example.html are input samples and preview artifacts; inside the directory there are no scripts, no runtime network calls, no credential accesses, and no file writes on the agent side; SKILL.md also does not specify any external generation or service backends (in contrast to the orange precedents ai-image-generation / seedance: which send assets to external generation backends and consume account credits; this template produces no outbound asset transmission). Non-grading explanatory notes: example.html in the directory links externally to cdn.tailwindcss.com and fonts.googleapis.com (Batch 4 criteria: external links in example.html belong to artifact samples and are not graded); the shared instruction layer similarly requires the generated output to import Tailwind and Google Fonts via CDN in the head (- Include Tailwind v3 Play (https://cdn.tailwindcss.com) and required Google Fonts via CDN in `<head>`), which is host shell behavior. Host context (not included in rating, see verdict.risks): preview iframe sandbox="allow-scripts allow-same-origin"; host launches the agent in full-permission mode ("bypassPermissions", / "--yolo",). Note also: the official sample page example.html contains zero external links and zero scripts, making this skill the one with the smallest network footprint among the 9 templates.

5Second-Pass Verification

  • [ok] 『6 段版面』宣称 — 重读 SKILL.md【布局】6 条与 JSON 引用逐字一致,无遗漏无夸大。
  • [discrepancy] 图表库条目(Chart.js / ECharts) — SKILL.md 写 `Revenue chart + Burn chart (Chart.js / ECharts)`,但 example.html 无任何 <script>、无 CDN 引用,图表为 CSS/SVG 手绘——规范建议与示例实现不一致,已写入 risks。
  • [ok] 『示例页零外链』结论 — 对 example.html 做 URL 正则扫描零命中、<script> 计数为 0,坐实自包含。
  • [ok] 运行时机制 — 重读 loader.ts loadSkillFromDir / shared.ts assemblePrompt,与第一遍结论一致。
  • [ok] 安全面 — skill 目录 2 个文件均无脚本/凭证/写盘/网络调用 token。
  • [ok] meta 元数据 — GitHub API 实查:stars=8827、pushed_at=2026-09-15T03:36:24Z、license Apache-2.0。
  • [unlocatable] 安装量 — 无公开安装量数据源,installs=null。

6Verdict & Scenarios

  • Extremely minimalist yet complete layout skeleton: above-the-fold = company/quarter/title + 4 hero KPIs, followed by charts, P&L, highlights, and Outlook, matching financial reading conventions.
  • P&L table requires zebra + sticky header, keeping long tables readable within a single page—the most practical usability detail for financial sheets.
  • Leaves breathing room for the shared instruction layer: does not lock color palettes, typography, or graphic language, ensuring low redesign overhead and easy alignment with existing corporate branding.
  • Official sample proves offline-ready delivery: zero external links, zero scripts, and hand-drawn CSS/SVG charts.
  • Best for: Ideal for quarterly/annual financial summaries that need to be read in a single page (pre-financing executive summaries, board meeting addenda, investor updates); also suitable as a starting layout for corporate financial reporting pages before applying custom brand styling. Perfect for teams wanting rapid outputs without manual visual tweaking.
    Not for: Not suitable for scenarios requiring multi-page detailed tables, extensive footnotes, or full audited disclosures (it is a long single-page layout, not a formal annual report document); not suitable for analytical deliverables demanding chart interactivity or drill-downs (the template only reserves chart slots, and the sample uses static SVGs); not suitable for directly using the sample as real data templates—the Northwind Q3 in the sample is purely fictional.
    Install Agent-Ready
    ① Verified Mirror 2026-09-15
    Option A · Direct DownloadDownload finance-report.tar.gz
    sha256: 3d200da22fb65eba…
    Option B · Copy Guide for Agent
    install.json
    Agents automatically download and verify mirrors from this JSON guide.
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit 553ed98c28.