1实现原理 · 为什么它能做到
五段结构:Title bar(会议名 + 时间 + 出席 avatars)→ Agenda checklist → Decisions 圆角卡 → Action items 表(Owner / Due / Status)→ Next meeting footer。
next/src/lib/templates/skills/meeting-notes/SKILL.md
- Title bar (会议名 + 时间 + 出席 avatars)
结构把「讨论(agenda)」「结论(decisions)」「待办(action items)」分得干干净净。
Action items 是重心:表头固定 Action / Owner / Due / Status,状态用 pill 表达。
next/src/lib/templates/skills/meeting-notes/example.html
<thead><tr><th>Action</th><th>Owner</th><th>Due</th><th>Status</th></tr></thead>
四列写死在表头,模型只需逐行填内容,不会把负责人/截止日混进描述里。
决议区用「What we agreed to, on the record」把每条决议写成可追责条目(含 owner 与条件)。
next/src/lib/templates/skills/meeting-notes/example.html
<h3>What we agreed to, on the record</h3>
示例的决议条目带条件与责任人(如「Devon owns the escalation」),示范「决议必须可执行」的写法。
模板本体就是 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核心能力
01Title bar + 出席区(Present 人员)
02Agenda 清单
03Decisions 圆角卡区块
04Action items 表(Action / Owner / Due / Status)
05状态 pill 四档(To do / In progress / Blocked / Done)
06Next meeting footer
4管控建议与判定依据
建议配套管控措施
面向 Agent
可自动加载
面向管理者
登记来源与版本
判定依据(文件路径与关键语句摘要)
- SKILL.md: 纯提示词指令与规则文本,无脚本执行与外部影响
审计说明: 🟢 绿色()。判级对象=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] 规范↔示例:五段覆盖 — Title bar(`<h1>Growth squad weekly · W42</h1>` + Present 区)、Agenda、Decisions、Action items(`<th>Action</th><th>Owner</th><th>Due</th><th>Status</th>`)、Next meeting 全部命中。
- [ok] 状态口径核对 — 示例 pill 四档(pill-todo / pill-progress / pill-blocked / pill-done)与表格单元格 `<span class="pill pill-todo">To do</span>` 落地正文的 Status 列要求。
- [ok] 示例决议写法(超出规范的示范) — 示例 Decisions 区以「What we agreed to, on the record」+ 带条件/责任人的条目呈现,属对模板的加分实现,非违背。
- [ok] 缺席/时区字段 — 正文只要求出席 avatars,未要求 Absent/时区字段,示例亦无——规范未要求,不作为缺口。
- [ok] 脚本/外链普查 — example.html 无 <script>、无 http(s) 命中;目录内零 URL。
- [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结论
适合: 团队周会/评审会纪要、1:1 记录、跨团队同步文档;需要「会后谁做什么」一目了然的交付物时最合适。
不适合: 需要逐字转录的会议记录(结构是摘要式);需要任务系统同步的场合(产物是静态页,不含集成);需要严格合规留档的正式会议纪要(模板无版本/签名机制)。
Install Agent-Ready
① Verified Mirror 2026-09-15
Option A · Direct DownloadDownload meeting-notes.tar.gz
sha256:
Option B · Copy Guide for Agent1228c950987d531b…agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
② Upstream GitHub
GitHub Repo ↗
Pinned to commit 553ed98c28.