大体积中日韩字体不随包分发,需运行 ensure-fonts.sh 补齐或回退到 jsDelivr CDN;Windows 上辅助脚本是 Bash 且 WeasyPrint 需额外装 GTK/Pango,建议用 WSL;代码高亮依赖 Pygments,未安装时 PDF 仍可渲染但代码为单色
Kami
tw93MIT活跃维护给 AI Agent 用的排版规则和模板,能把内容导出成 PDF、PNG 和可编辑的 PowerPoint,省去手动调版式。
👩🚒 Good content deserves good paper. Layout rules and templates that let AI agents export PDF, PNG and editable PowerPoint.
npx skills add tw93/kami -a claude-code codex cursor -g -yREADME 未说明显存或 GPU 要求;Windows 需在 WSL(Ubuntu)中运行,原生 Windows 还需另装 GTK/Pango 运行时
给 AI Agent 的排版规则与模板,把内容导出成好看的 PDF、PNG 和可编辑 PPT
给 AI Agent 用的排版规则和模板,能把内容导出成 PDF、PNG 和可编辑的 PowerPoint,省去手动调版式。
核心能力
- 内置九种文档模板,覆盖简历、一页纸、幻灯片等
- 支持 WeasyPrint 转 PDF、python-pptx 生成可编辑 PPTX
- 用 Mermaid 文本生成并重配色的内联 SVG 图表
- 提供零依赖 MCP 服务,可作渲染引擎被 Agent 调用
- 内容 schema 与覆盖率检查,排版前先校验结构
容易踩的坑
- V1.20.0V1.20.0 Cleaner Reports最新正式版2026-10-29 · 2026-10-29 23:39 UTC
Changelog
- Table edges: the first and last table columns carried cell padding, so table text started inside the heading above it, and the outer columns now sit on the text edge in all 18 document templates and slide tables, while striped tables keep their inset for the ivory fill.
- Portfolio cover: portfolios opened with a separate About page that repeated the resume and often filled only half the page, and the introduction now sits on the cover under the name, with the single-column About page kept commented out in the Chinese, English and Korean templates.
- Equity report layout: the rating sat in an ivory callout and the closing analyst summary in a second ivory box, and the rating now sits at the right end of the thesis heading, risk cards drop their fill, and the summary is a hairline, an 11pt conclusion and four labeled rows.
更新日志
- 表格边缘对齐:表格首列和末列此前带单元格内边距,文字比上方标题缩进一截,现在 18 个文档模板和幻灯片表格的外侧列都贴齐正文边缘,斑马纹表格保留内边距给象牙色底留出空间。
- 作品集封面介绍:作品集此前单独有一页关于我,内容和简历重复且经常只排满半页,现在个人介绍放在封面姓名下方,单栏关于页以注释形式保留在中英韩三个模板里,需要时取消注释就能使用。
- 研报版式:评级此前放在象牙色提示框里,结尾的分析师总结也是一个象牙色方框,现在评级位于投资逻辑标题行右端,风险提示去掉底色,总结改为细线、11pt 结论句和四行要点列表。
Kami helps AI agents create clear, consistent professional documents. https://github.com/tw93/Kami
- V1.19.0V1.19.0 Product Sites2026-10-29 · 2026-10-29 14:24 UTC
查看更新说明
Changelog
- Product site accent: landing pages kept Kami's ink-blue whatever the product was, and the accent now comes from the product's own icon or UI color, with a side-by-side pick when it has none and ink-blue only as the last fallback, while surfaces and grays stay warm.
- Landing page buttons: the ghost button was a brand-colored outline that read as a second offer, and it is now an ivory pill with a neutral hairline, while on phones both hero buttons keep their label's width at 44px tall and the second one wraps to its own row.
- CJK fonts on websites: a Chinese stack of system font names set Charter beside a sans on every iPhone, and the guide now orders the stack by where the text renders, self-hosts a Chinese serif subset, sets Korean in the system sans, and keeps TsangerJinKai02 off paid products.
- CJK line endings:
text-wrap: pretty,balance,line-break: strictandkeep-allwrapped Chinese and Japanese lines early on phones, and the guide now drops all four so every line fills the column, with a comma or full stop that does not fit hanging at the edge. - Screen type scale: the guide set no limit on how many font sizes a screen page used, and it now targets four sizes with a 12px floor and two text color rungs, and gives nested rounded shapes one centre, so the inner radius equals the outer radius minus the inset.
更新日志
- 产品站强调色:落地页此前无论什么产品都使用 Kami 的墨蓝,现在强调色取自产品自己的图标或界面主色,没有主色时并排展示候选供用户选择,墨蓝只作为最后的回退,底色和灰阶保持暖色。
- 落地页按钮:次要按钮此前是品牌色描边,看起来像第二个购买选项,现在改为象牙色底和中性细线的胶囊按钮,手机上两个首屏按钮按文字宽度排列、高度 44px,放不下时第二个换到下一行。
- 网站中日韩字体:只写系统字体名的中文字体栈在 iPhone 上会让 Charter 与黑体混排,规范现在按渲染位置排列字体栈并自托管中文衬线子集,韩文改用系统无衬线体,付费产品不用仓耳今楷。
- 中日文行尾:
pretty、balance、strict和keep-all会让中文和日文在手机上提前换行,规范现在全部去掉,每一行排满栏宽,放不下的逗号和句号悬挂在行尾。 - 屏幕字号层级:规范此前没有限制屏幕页面的字号数量,现在定为四级字号、最小 12px、正文两级文字颜色,嵌套的圆角形状共用同一个圆心,内圆角等于外圆角减去两者间距。
Kami helps AI agents create clear, consistent professional documents. https://github.com/tw93/Kami
- V1.18.0V1.18.0 Charted Pages2026-10-15 · 2026-10-15 13:07 UTC
查看更新说明
Changelog
- Charts from data: chart bars and arcs used to be placed by hand in SVG, and
build.py --chartnow draws six chart types from a JSON spec, sized for a document column, while--deliverfails a chart whose marks no longer match its data. - Korean PDF rendering: Korean text showed blank in macOS Preview and MuPDF and broke lines inside words, and the render now embeds a TrueType copy of Source Han Serif K and breaks Korean only between words.
- Slide type scale: slide titles were set at 24pt over 11pt body text, which left content in the top third of each slide, and the deck templates now use 32pt titles and 13pt body text, with the bottom takeaway clear of the footer.
- Delivery over MCP:
kami_checkran only part of the checks, and the newkami_delivertool returns the same READY or NOT READY verdict as--deliver, while a resume too thin for two pages is reported as a data gap. - Brand profile from a website: a brand profile had to be written by hand, and
scripts/brand_extract.py <url>now drafts one from the site's colors, fonts, and logo, darkening the accent until it reaches 4.5:1 on parchment, for review before use.
更新日志
- 数据图表生成:此前图表坐标需在 SVG 中手工计算,现在
build.py --chart根据 JSON 数据生成六类图表并适配文档栏宽,--deliver会拦下与数据不一致的图表。 - 韩文 PDF 渲染:韩文此前在 macOS 预览和 MuPDF 中显示为空白,并在词中间断行,现在渲染时嵌入 Source Han Serif K 的 TrueType 副本,只在词与词之间断行。
- 幻灯片字号:幻灯片标题此前为 24pt、正文 11pt,内容集中在页面上方三分之一,现在模板标题改为 32pt、正文 13pt,底部结论条也不再与页脚重叠。
- MCP 交付检查:
kami_check此前只执行部分检查,新增的kami_deliver返回与--deliver相同的 READY 或 NOT READY 结论,素材不足两页的简历改为报告数据缺口。 - 网站品牌提取:品牌档案此前需要手写,现在
scripts/brand_extract.py <url>根据网站的颜色、字体和标志生成草稿,并将强调色加深到在纸色背景上达到 4.5:1,经确认后使用。
Thanks
Issue reporters this cycle: @fshaan.
Kami helps AI agents create clear, consistent professional documents. https://github.com/tw93/Kami
- Charts from data: chart bars and arcs used to be placed by hand in SVG, and
- V1.17.0V1.17.0 Clean Finish2026-09-25 · 2026-09-25 01:24 UTC
查看更新说明
Changelog
- Single delivery gate: document checks used to be a dozen separate commands invoked one at a time, and
build.py --delivernow runs all of them in a fixed order, renders the PDF, exports page images, and reports READY or NOT READY. - On-demand references:
SKILL.mddrops from 44 KB to 19 KB and a new document no longer reads the full design spec, since the page density, resume, product site, and chart rules now load only for the type that needs them. - Korean serif fallback: without Source Han Serif KR the Korean templates used to fall to the Apple SD Gothic Neo sans, and they now fall to the Nanum Myeongjo or AppleMyungjo serif first, which the font check accepts.
- Fewer false failures: checks resolve relative paths from the document's folder instead of the skill folder, the resume templates pass their own style rule, the author placeholder is left for the renderer, and a short last page no longer warns.
更新日志
- 统一交付检查:此前十余项检查需逐条单独调用,现在
build.py --deliver按固定顺序执行全部检查,渲染 PDF 与页面截图,并给出 READY 或 NOT READY 结论。 - 按需加载规范:
SKILL.md从 44 KB 精简到 19 KB,新文档不再通读完整的设计规范,页面密度、简历、产品站点和图表规则只在对应类型下加载。 - 韩文衬线回退:缺少 Source Han Serif KR 时,韩文模板此前会回退为黑体,现在回退到 Nanum Myeongjo 或 AppleMyungjo 衬线,字体检查同样认可。
- 误报减少:检查命令的相对路径改为从文档所在目录解析,简历模板能通过自身的样式规则,作者占位符留给渲染器填写,多页文档的最后一页不再因篇幅短而告警。
Kami helps AI agents create clear, consistent professional documents. https://github.com/tw93/Kami
- Single delivery gate: document checks used to be a dozen separate commands invoked one at a time, and
- V1.16.0V1.16.0 Honest Numbers2026-09-20 · 2026-09-20 07:17 UTC
查看更新说明
Changelog
- Long-doc page numbers: WeasyPrint 70 stopped resolving the counters and printed every one as 0, so the anchors are blocks again and
--verifycompares each numeral against the page its row links to. - Verified numbers only: every bullet and paragraph had to carry a figure, so it is verified numbers now and observable outcomes where no metric exists.
- Diagram geometry checks: annotate nodes, edges, and label masks and
--checkreports misattached endpoints, overlaps, covered labels, and edges through a node. - Typography and revisions: body measure holds 40 to 70 characters, alignment is optical rather than mathematical, and variants render in the product's own frame.
- Lighter intake: the page-count question is gone, document type and length come from your content, and the skill no longer restyles a website you already have.
更新日志
- 长文目录页码:WeasyPrint 70 起页码在 flex 锚点上解析失败并全部渲染为 0,改回块级锚点后恢复,
--verify会比对页码与链接的目标页。 - 数字要真:此前每条经历和每个段落都必须带一个数字,现在只用可核实的数字,没有指标时写明可观察的结果。
- 架构图几何检查:标注节点、连线和标签遮罩后,
--check会报出端点未附着、节点重叠、标签被覆盖和连线穿过节点。 - 排印与改稿:正文行长限定 40 到 70 个字符,对齐以视觉为准,行距映射固定档位,候选方案在产品自身背景中渲染。
- 前置提问:不再先询问页数,文档类型与篇幅由内容推断,技能描述收窄后不再触发对既有官网的审计或改版。
Thanks
Issue reporters this cycle: @yuanyuanzhang0815 · @SinnLake.
Kami helps AI agents create clear, consistent professional documents. https://github.com/tw93/Kami
- Long-doc page numbers: WeasyPrint 70 stopped resolving the counters and printed every one as 0, so the anchors are blocks again and
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Why
Kami (紙, かみ) means "paper" in Japanese. It gives AI agents layout rules and templates for PDF, PNG, and editable PowerPoint output, with nine built-in document templates and a product landing page.
As the delivery piece of the trilogy, Kami works alongside Kaku (書く), built for writing code, and Waza (技), built around engineering habits, so technical work is not only logically rigorous but also visually compelling.
Showcase
Sample PDFs in several formats and languages. Click any preview to open it.
Social Cards
Image cards for Instagram and X, in eight paper colors. The four below use what I posted about my own products. Click any card to see it full size.
Install
Claude Code, Codex, Cursor, and other agents
npx skills add tw93/kami -a claude-code codex cursor -g -y
One copy lands in ~/.agents/skills, the shared skills directory. Claude Code is symlinked in; Codex, Cursor, and every other agent that reads that directory picks Kami up as /kami. Update with npx skills update -g -y.
Or ask your agent:
Install Kami for me by reading https://kami.tw93.fun/llms.txt
Host plugin, if you prefer the host's own update command (namespaced as /kami:kami, Claude Code v2.1.142 or newer):
# Claude Code (update: claude plugin update kami)
/plugin marketplace add tw93/kami
/plugin install kami@kami
# Codex (update: codex plugin marketplace upgrade kami, then codex plugin add kami@kami)
codex plugin marketplace add tw93/kami
codex plugin add kami@kami
Claude Desktop: download the release asset kami.zip, not GitHub's source ZIP, open Customize > Skills > "+" > Create skill, and upload it. To update, click "..." on the skill card, choose Replace, and upload the latest ZIP.
Large CJK fonts stay out of every package: skills/kami/scripts/ensure-fonts.sh recovers missing Chinese or Korean fonts into the user font directory, and in a repository checkout it copies the tracked fonts into the skill so templates load them locally before falling back to the jsDelivr CDN.
On Windows, run Kami inside WSL (Ubuntu): the helper scripts are Bash, and WeasyPrint on native Windows also needs the GTK/Pango runtime installed separately.
Kami also runs a quiet version check at most once a day and tells you in chat when a newer published release is out. It writes a marker in the local XDG cache directory, then resolves GitHub's latest public release; it uploads no user document or task content and fails silently when offline or when no cache home is available.
Use
Supported Languages
English and Chinese have the most complete support. Japanese and Korean use language-specific font fallbacks and layout adjustments, with each output checked before delivery. Each language uses a single serif font for the whole page, with font terms under License:
| Language | Support Level | Default Serif Font |
|---|---|---|
| English | Complete | Charter |
| Chinese (简体 / 繁體) | Complete | TsangerJinKai02 (仓耳今楷) |
| Japanese (日本語) | Font fallbacks & layout check | YuMincho (游明朝) |
| Korean (한국어) | Font fallbacks & layout check | Source Han Serif K (본명조) |
The skill auto-triggers from natural requests, no slash command needed. Example prompts by language:
- English:
make a one-pager for my startup/turn this research into a long doc/write a formal letter/make a portfolio of my projects/build me a resume/design a slide deck for my talk/make this talk as a Marp deck/build a landing page for my app - 中文:
帮我做一份一页纸/帮我排版一份长文档/帮我写一封正式信件/帮我做一份作品集/帮我做一份简历/帮我做一套演讲幻灯片/帮我做一份 Markdown 风格的演示稿/帮我做一个产品落地页 - 日本語:
スタートアップ向けの一枚資料を作って/この調査を長文レポートに整えて/正式な依頼文を作って/プロジェクト作品集を作って/履歴書を作って/登壇用スライドを作って/Marp で登壇スライドを作って/アプリのランディングページを作って - 한국어:
스타트업 원페이저를 만들어줘/이 리서치를 장문 문서로 정리해줘/정식 레터를 작성해줘/프로젝트 포트폴리오를 만들어줘/이력서를 만들어줘/발표용 슬라이드를 만들어줘/Marp 슬라이드로 만들어줘/앱 랜딩 페이지를 만들어줘
Brand profile (optional)
Create ~/.config/kami/brand.md to persist identity, brand, defaults, and writing habits, so you don't repeat your preferences for each document. The file has YAML frontmatter for structured fields like name, role, email, brand color, language, page size, and tone, plus a Markdown body for freeform notes. Kami uses these settings where the current request leaves a choice open; explicit instructions always take priority. See brand.example.md for a full template.
Design
The defaults are a warm parchment background (#f5f4ed), ink-blue accents (#1B365D), and serif fonts. Templates use type size and spacing to separate titles, body text, and notes. You can adjust the defaults for your brand.
- Templates. Nine document templates: One-Pager, Long Doc, Letter, Portfolio, Resume, Slides, Equity Report, Changelog, and Social Cards, plus a Landing Page system, in EN, CN, and KO. Kami picks the right variant based on the language you write in.
- Diagrams. Eighteen inline SVG types, including a report-scale architecture board. Sequence, class, and ER can be authored from Mermaid text: beautiful-mermaid renders the SVG and
skills/kami/scripts/mermaid_normalize.pyre-themes it to the Kami palette and makes it WeasyPrint-safe, no Node bundled. - Slides. Three rendering paths: WeasyPrint HTML to PDF by default, python-pptx for editable PPTX on request, and a Marp variant in
skills/kami/assets/templates/marp/for Markdown-first decks. - Code. Pygments-based syntax highlighting when
Pygmentsis installed; without it, PDFs still render and code stays monochrome. - Verification. Content schemas check structure before layout; coverage checks look for content missing from the filled page. A structured brief records the audience and requirements, and page images support the final visual review.
- MCP. A zero-dependency MCP server (
skills/kami/scripts/mcp_server.py) exposes capability diagnosis, render, structured check, and screenshot tools, so any MCP-capable agent can drive Kami as an engine without loading the full skill prompt. Render only trusted local HTML: referenced file, HTTP, and HTTPS resources load with the MCP process's permissions. - Print. Parchment is the default canvas; an opt-in white-paper variant flips any document to a white background for home or office printers, keeping warm backgrounds in cards and tables. The one-page Kami intro (Chinese) is rendered with this variant; recipe in production.md.
- Social cards. Image cards for Instagram and X, one 1242x1660 page each, on eight papers that each carry a single accent, one paper per set. Delivery checks every card for text that outgrows it, runs onto the photo, or ends on a line of one or two characters. The author's words never change; line breaks are fixed with layout.
Full spec: design.md. Cheatsheet: CHEATSHEET.md.
Beyond Documents
The same layout rules also work for landing pages and prompts for AI image tools. Landing pages ship as deployable multilingual sites. Illustrations use the host's own image generation when that capability is available; otherwise Kami outputs the same complete brief for use in an image model.
Redraw this as a clean editorial diagram. Background: warm parchment (#f5f4ed), never pure white. One accent only, ink blue (#1B365D); everything else in warm gray with a yellow-brown undertone, no other colors. Thin single-line geometric strokes and simple flat icons. No gradients, no drop shadows, no 3D. Labels in a serif typeface. Generous whitespace, calm and composed, like a figure in a well-typeset report.
The two illustrations above were rendered by ChatGPT Images in a single pass, with no manual touch-up.
Background
I like investing in US equities and ask Claude to write research reports all the time. Every output landed in the same default-doc look: gray, flat, a different layout each session. The structure was hard to scan, the formatting felt dated, and nothing about the page made me want to keep reading. So I started fixing the typography, the palette, the spacing, one rule at a time, until the report became a page I actually enjoyed.
Later I needed to present "The Agent You Don't Know: Principles, Architecture and Engineering Practice." I already had the document and didn't want to build slides from scratch, so I used Claude Design to lay it out in my own style, tweaked it round after round, and eventually got it to a place I was happy with. That process added inline SVG charts, a unified warm palette, and a tighter editorial rhythm. It kept growing until it covered every document I regularly ship, so I collected the templates and rules into Kami.
Support
- The most direct way to support me is getting Mole for Mac, my paid Mac cleanup app
- If Kami helped you, give it a star, share it, or open an issue or PR
- I have two cats, TangYuan and Coke, and if Kami has been useful, you can feed them canned food 🥩
These lovely people already did 🐱
License
MIT License for Kami code and templates. Please feel free to use and contribute to the development.
Fonts: TsangerJinKai02 is free for personal use only; commercial use requires a license from tsanger.cn. Source Han Serif K and JetBrains Mono are under the OFL. Charter and YuMincho come from the operating system and are not shipped with Kami; CJK fallbacks are system-bundled or open-licensed.