1实现原理 · 为什么它能做到
A4 单页发票的五段结构写死:header(发票号/日期/截止日)→ From/Bill to → line items 表 → tax + totals 右对齐 → payment instructions。
next/src/lib/templates/skills/invoice/SKILL.md
- Header: 发票号 / 日期 / 截止日
注:结构清单即字段清单,模型只需按段填内容,不会漏掉税务与付款指引这类易忘区块。
打印可用性靠 @media print 单独收口:打印分支去阴影、去边框、改内边距;另有 720px 以下的单列塌陷兜底。
next/src/lib/templates/skills/invoice/example.html
@media print {
注:示例在打印分支里把 .sheet 的 box-shadow/border 去掉并改为白底,正文要求的「颜色对比保留」落实为「只动背景与边距、不动文字色」。
金额不是只有一个 Total:示例给出 Subtotal → Sales tax · NY (9%) → Net before tax 的可核算层级。
next/src/lib/templates/skills/invoice/example.html
<div class="total-row tax"><span>Sales tax · NY (9%)</span><span>$3,246.48</span></div>
注:税项与净额分层让发票经得起核对;付款条款另写 30 天账期 + 1.5% 月服务费 + 已付定金抵扣。
模板本体就是 prompt:SKILL.md 正文经 loader 读出后与共享前言、用户内容拼装,交给本机 agent CLI 执行。
next/src/app/api/convert/route.ts
prompt = assemblePrompt({ body: skill.body, content, format });
注:运行时不吃模板目录里的代码:/api/convert 只收 {agent, templateId, content},用 loadSkill(templateId) 取 SKILL.md 正文当 prompt 主体,再交给本机已登录的 agent CLI;HTML 由 stdout 流回前端。
skill 目录是纯文本资产:loader 读盘取 SKILL.md 正文,目录内无任何可执行代码被加载。
next/src/lib/templates/loader.ts
const raw = safeRead(path.join(dir, "SKILL.md"));
注:文件系统里的 skill 只是文本:loader 逐个目录读 SKILL.md,frontmatter 抽成 picker 元数据、正文作为 body 返回;本模板目录内没有任何模块被 import 或执行。
共享前言先于模板注入,把「模板只定义版面/风格/配色/字体/组件库,数量由用户内容决定」定为最高优先级。
next/src/lib/templates/shared.ts
【内容驱动数量 — 最高优先级, 覆盖模板里的任何数字】
注:共享前言在模板正文之前注入,规定「模板只定义版面/风格/配色/字体/组件库,数量由用户内容决定」——所以本模板里的版式清单是「可复用版式池」,不是页数/帧数上限。
共享前言先于模板注入,把「模板只定义版面/风格/配色/字体/组件库,数量由用户内容决定」定为最高优先级。
next/src/lib/templates/shared.ts
- **禁止使用 Write / Edit / MultiEdit / Bash / Create / 任何文件系统工具**。不要把 HTML 写到任何 \`.html\` 文件里。前端直接捕获你的 stdout 文本, 文件落盘由前端负责。
注:前言明令禁用文件系统工具、要求纯 HTML 从回复正文流式输出,落盘由前端负责——skill 侧因此没有写盘行为。
skill 目录是纯文本资产:loader 读盘取 SKILL.md 正文,目录内无任何可执行代码被加载。
next/src/lib/templates/loader.ts
const exampleHtml = safeRead(path.join(dir, "example.html"));
注:目录里的 example.html 是随仓库分发的黄金样本,预览路由直接读盘返回(无构建、无编译),既是质量基线也是详情页素材。
2核心能力
01打印就绪的 A4 单页(@media print + 手机单列塌陷)
02明细表(Description / 数量 / 单价 / 金额)
03From / Bill to 双栏对开
04税与总额分层(Subtotal / Sales tax / Net before tax)
05付款指引 + 手写质感签名区
4风险提醒 风险提醒:绿色 · 放心使用
风险提醒:绿色 · 放心使用
- 发票是合规敏感文书,模板不含任何税务/法律校验 — 税率、账期、滞纳金全部来自用户内容(示例为 NY 9% 等美式设定);直接复用示例条款会写出不符合实际司法辖区的措辞。
- 货币/税制默认为美式($ + sales tax) — 中文发票场景需替换字段(发票代码/号码规则、税率与价税分离、抬头与税号),模板未提供中文字段约定。
- 打印时背景色依赖浏览器设置 — 若浏览器「不打印背景图形」被勾选,纸张底色会丢失;正文只保证不动文字色,观感仍取决于打印设置。
🟢 绿色(风险提醒:绿色,放心使用)。判级对象=skill 自身目录:目录内零 URL(example.html 也无任何 http(s) 端点)。目录内只有 SKILL.md、example.html,零脚本、零可执行代码、零网络端点、零凭证读取、零写盘指令——照 SKILL.md 执行的结果是宿主模型输出一段 HTML 文本,不含任何外发或落盘动作。宿主壳与产物使用侧行为不作为档位依据,只记入 verdict.risks:shared.ts 前言要求产物引 Tailwind CDN(https://cdn.tailwindcss.com) 与 Google Fonts、runtime 会 spawn 本机已登录的 agent CLI(envFor 透传 process.env)、预览 iframe 为 sandbox="allow-scripts allow-same-origin"。
5第二遍独立确认
- [ok] 规范↔示例:五段全覆盖 — header(INV-2025-0142 / Issued 14 October 2025 / Due 13 November 2025)、Bill to、明细表(Description 表头)、Subtotal/Sales tax/Net before tax、Payment terms 全部命中。
- [ok] 打印样式核对 — 示例 `@media print` 分支确做去阴影/去边框/改 padding(`.sheet { box-shadow: none; border: none; margin: 0; padding: 32px 36px; }`),与正文「@media print 样式」一致。
- [ok] 「颜色对比保留」核对 — 打印分支只改背景/阴影/边距,未改文字色变量(--ink/--muted 保持),对比度不降。
- [ok] 移动端兜底(正文未要求) — 示例另有 `@media (max-width: 720px)` 把 parties/pay/signoff/totals 塌成单列,属超出规范的加固,非违背。
- [ok] 税务/条款为示例文案 — 示例的 NY 9% 销售税、1.5% 月服务费、30 天账期均为演示内容,正文未规定任何税务口径,须由用户输入决定——不算夸大也不构成合规保证。
- [ok] 目录资产面普查 — glob 全量:SKILL.md、example.html;无 scripts/、无 references/、无数据文件、无包管理器清单。
- [ok] 可执行代码普查 — example.html 内 <script> 计数 = 0,fetch/XMLHttpRequest/WebSocket 命中 0;SKILL.md 全篇无脚本或可执行代码。
- [ok] 外链端点普查 — 目录内(含 example.html)零 http(s) 命中,产物离线自持。
6结论
适合:自由职业/工作室对外开票、SaaS 订阅账单、咨询项目结算单;需要一个能直接打印、金额层级清楚的单页发票时最合适。
不适合:需要与财务系统对接/自动算税的场景(模板不校验税务逻辑);需要电子签章与审计追踪的正式票据;需要中文增值税发票要素的场合。
安装 agent 直装可复制
① 本站镜像 更新 2026-09-15
方式 A · 人下载镜像包下载 invoice.tar.gz
sha256:
方式 B · JSON 格式安装指南,复制给 agenta389000ce1b07884…agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
② 上游 GitHub · 原始来源
来源信息 GitHub 原始
作者 / 仓库nexu-io / nexu-io/html-anything
原始 GitHubnexu-io/html-anything ↗
Stars8827
最近推送2026-09-15
本 skill commit
553ed98c28许可Apache-2.0(仓库根 LICENSE 文件为 Apache License Version 2.0;package.json "license": "Apache-2.0";GitHub API spdx_id Apache-2.0)
本站信息
收录日期2026-09-06
分类文档与知识
侦查报告AI 侦查 · 2 遍 · 2026-09-06
本站镜像与 GitHub 原始是不同来源:本站锁定 commit 快照经 /r2 分发;GitHub 为实时上游,内容可能已更新。