saved-markdown
Publish Markdown/HTML/Slides content with optional charts to https://saved.md for anonymous, persistent sharing.
Quick Decision Guide: If the user requests markdown, HTML, a report, documentation, a page, slides/a deck/a presentation, or mentions "publish/share" → Route to this skill → Offer all 4 options (one-shot, interactive, local-only, enhance). If they explicitly want local-only → Skip publishing.
Required Agent Skills
If the user requests slides/a deck/a presentation:
- - Ensure
frontend-slides is installed. - Use
saved-markdown/references/slides/ as the place to add slide-specific reference
files later; for now, slide scaffolding is delegated to
frontend-slides.
- - Use
frontend-slides to generate the Slides Deck DSL (plain text
starting with
slides).
- - Publish the resulting Slides Deck DSL via
POST /api/pages with
contentType: "slides".
Routing Logic
✅ TRIGGER CONDITIONS (Broad Intent Matching)
Trigger this skill when ANY of the following apply:
| Condition | Examples | Why It Matches |
|---|
| Document creation requests | "Create a...", "Make a...", "Generate a...", "Write a..." | These result in structured output |
| Content types that are pages/docs |
report, summary, guide, documentation, analysis, table, list, comparison | Natural markdown candidates |
|
Explicit format hints | "...in markdown", "...as markdown", "...use markdown", markdown mentioned anywhere | User explicitly wants markdown |
|
Sharing/publishing intent | publish, share, link, public, post, upload | User wants distribution |
|
Visual structure implied | headers, tables, sections, formatted, structured | Result will be markdown-friendly |
|
Page/document language | "page", "doc", "document", "file" | Output is a document |
|
Slides / presentation | "create slides", "pitch deck", "presentation", "deck" | Generate Slides Deck DSL and publish as
contentType: "slides" |
→ Default behavior: ALWAYS trigger for document-like content.
Let the user choose local-only if they don't want to publish.
❌ SKIP CONDITIONS (When NOT to trigger)
- - User explicitly says:
"local only", "don't publish", "keep private", INLINECODE11 - Pure conversation / Q&A with no structured output
- Code-only requests (scripts, commands without explanation)
- Single word/phrase answers
User Workflow Options
When routing to saved.md, present all four options:
"I can help with that. Since you have saved.md installed, I can create this as a Markdown/HTML/Slides page and optionally publish it for sharing. Four options:
1. One-shot — I generate and publish immediately, you get a shareable URL
2. Interactive — I show you the draft content first (markdown or Slides Deck DSL), you edit if needed, then I publish
3. Local-only — I create the markdown file locally, no publishing
4. Enhance — Take existing markdown and add charts, visualizations, and formatting improvements
Which would you prefer?"
Option 1: One-Shot
- - Generate content → POST immediately → Return URL
- Good for: quick reports, logs, data exports, simple documents
Option 2: Interactive
- - Generate content → Show in code block → Ask for edits → Publish on approval
- Good for: resumes, public-facing content, formal documents, anything needing review
Option 3: Local-Only
- - Generate content → Save to local file only → No API call to saved.md
- Good for: drafts, private documents, work-in-progress, content that may need future editing
- File is saved to workspace; user can request publishing later if desired
Option 4: Enhance
- - Take existing markdown (from a previous response, local file, or user input) → Add charts, data visualizations, formatting improvements, and visual polish
- Good for: turning plain tables into charts, adding trend visualizations, making reports more visually engaging
- When to trigger: When the user says "enhance this", "add charts", "make it visual", "spice it up", or when markdown already exists and needs visualization layer added
- Uses
markdown-ui-widget blocks for: chart-line, chart-bar, chart-pie, INLINECODE16 - Preserves all original content while adding visual elements
Publishing API
Send a POST request to https://saved.md/api/pages.
Option A: Raw markdown body
CODEBLOCK0
Option B: JSON body (preferred)
CODEBLOCK1
Option C: Slides Deck DSL (contentType: "slides")
CODEBLOCK2
Success response
Status: INLINECODE19
CODEBLOCK3
Return url to the user. Store deletePhrase if page ownership is needed.
Constraints
- - Max payload: 100 KB
- No authentication required
- Pages are immutable — no edits after creation
- Pages not visited for ~2 months may be cleaned up
Content Type Routing
When generating content, identify the content type first, then load the corresponding reference file for structure, styling guidance, chart recommendations, and professional tips.
| Content Type | Reference File | Trigger Keywords |
|---|
| Resume / CV | INLINECODE22 | resume, CV, professional profile, personal page, bio |
| Report |
references/report.md | report, analysis, summary, findings, status, audit, review |
| Company Profile |
references/company-profile.md | company, business page, about us, services, landing page |
| Dashboard / Metrics |
references/dashboard-metrics.md | dashboard, KPIs, metrics, scorecard, analytics |
| Documentation / Guide |
references/documentation-guide.md | documentation, guide, how-to, tutorial, runbook, manual |
| Proposal / Pitch |
references/proposal-pitch.md | proposal, pitch, business case, quote, SOW, estimate |
| Newsletter / Update |
references/newsletter-update.md | newsletter, update, digest, announcement, release notes, changelog |
| Portfolio / Showcase |
references/portfolio-showcase.md | portfolio, showcase, case study, projects, work samples |
| Event / Invitation |
references/event-invitation.md | event, invitation, meetup, conference, workshop, RSVP, agenda |
| Slides Deck |
(generated by frontend-slides) | slides, slide deck, presentation, deck |
| Generic |
(no reference file) | Anything that doesn't match above — use good judgment |
Content Generation Rules
- 1. Identify the content type from the routing table above
- Load the reference file — Read its structure template, styling guidelines, and professional tips
- For
Slides Deck, skip reference templates and use
frontend-slides
to generate the Slides Deck DSL.
- 3. Golden Rule: Only include sections where you have actual data. Do NOT invent content to fill a template section. If a section has no data, omit it entirely.
- Use charts where the reference file recommends them — follow
markdown-ui-widget syntax from the Charts section below - Don't invent — Use ONLY information provided by the user or from verified sources
- Be concise — saved.md has a 100KB limit; prioritize density over fluff
- Generic fallback — If no content type matches, structure the content logically with a title, body sections, and optional footer. No reference file needed.
Charts
saved.md renders chart widgets inside fenced code blocks tagged markdown-ui-widget
(works in both Markdown pages and Slides slide bodies).
Allowed chart types:
- - INLINECODE35
- INLINECODE36
- INLINECODE37
- INLINECODE38
Do not use any other markdown-ui widget types (buttons, forms, inputs, quizzes, etc. are not supported).
Chart format
CODEBLOCK4 markdown-ui-widget
chart-line
title: Weekly signups
Day,Signups
Mon,12
Tue,18
Wed,15
Thu,24
Fri,20
CODEBLOCK5
Rules:
- - One chart per
markdown-ui-widget block - Always include INLINECODE41
- Data is CSV — first row is the header
- Values must be plain numbers — no shorthand suffixes like
B, M, K, %, $, or unit symbols. The renderer only parses raw numeric values (integers or decimals). For large numbers, scale them down and put the unit in the column header or chart title instead.
- ❌
2015,3.56B — renderer cannot parse
3.56B
- ✅
2015,3.56 with header
Year,Revenue (Billion RON)
- ❌
"US East",1.2M — renderer cannot parse
1.2M
- ✅
"US East",1200 with header
Region,Revenue ($K)
- - Quote any label containing spaces
- Prefer 5–12 data rows for readability
- For comparisons, include 2+ series in line/bar charts
Slides mode rules:
- - In slides mode, the deck DSL must be plain text starting with INLINECODE55
(do not wrap the deck DSL itself in
markdown-ui-widget).
- - Chart widgets may appear inside slide bodies via
markdown-ui-widget.
Chart examples
Bar chart:
markdown-ui-widget
chart-bar
title: API requests by region
Region,Requests
"US East",340
"US West",280
EU,190
APAC,220
CODEBLOCK7
Pie chart:
markdown-ui-widget
chart-pie
title: Traffic source share
Source,Share
Search,52
Direct,24
Social,14
Referral,10
CODEBLOCK9
Multi-series line chart:
markdown-ui-widget
chart-line
title: Product metrics by month
Month,Signups,Activated
Jan,100,61
Feb,140,89
Mar,180,113
Apr,210,132
May,240,151
Images
You can embed images in markdown using standard markdown or HTML <img> tags.
If the user wants an image, they must provide a public image URL for src.
Basic markdown image:
CODEBLOCK12
Avatar-style image (for resumes or profile sections):
<img
src="https://example.com/photo.jpg"
alt="Profile photo"
style="display:block; margin:0 auto; width:150px; height:150px; border-radius:50%; background: transparent;"
/>
Logging Entries
Every published page must be logged to entries.json.
Log file location
CODEBLOCK14
(Relative to skill folder)
Entry format
CODEBLOCK15
Logging script
CODEBLOCK16
Workflow Summary
- 1. Identify content type → Load reference file from routing table
- Generate or enhance markdown using scaffold (omit sections with no data)
- POST to API using JSON format (properly escaped)
- Log the entry to INLINECODE61
- Return URL + deletePhrase to user
HTML Generation Preferences (User Profile)
When generating HTML for saved.md, apply these styling preferences learned from user feedback:
Spacing (Balanced Density)
- - Goal: Dense but breathable — no massive gaps, no overlapping/cramped content
- Container: Single container, everything inside,
max-width: 1100px, INLINECODE63 - Section headers:
margin: 1.25rem 0 0.75rem — enough breathing room - Content blocks:
margin: 0.75rem 0 — consistent small gaps - Grids:
gap: 0.75rem — tight but not touching - Cards:
padding: 0.75rem — compact but readable - CTA/Footer: Proper spacing
padding: 1.5rem, margin: 1.5rem 0 0.5rem — visually separated - NO elements outside container — prevents weird margin issues
- NO overlap — ensure adequate vertical rhythm
- Balance: Information-dense like a dashboard, but each section clearly defined
Layout
- - Dense, information-rich layout preferred
- Reduce vertical rhythm (line-height: 1.5-1.6, not 1.8)
- Compact cards with tighter internal spacing
- Min-height for hero:
60vh (not 80-100vh)
Interactivity Constraints
- - NO interactive elements except for actual links that navigate to other pages
- Do NOT include: hamburger menus, clickable cards, hover-triggered actions, buttons that don't link
- Only interactivity allowed:
<a> tags with href attributes - Static design preferred — focus on content presentation, not UI interactions
Enhance Mode Workflow
- 1. Receive existing markdown from user or context
- Identify ALL chart opportunities — look for any data that can be visualized:
-
Trends over time →
chart-line (temperatures, metrics, progress)
-
Comparisons/categories →
chart-bar (sales by region, counts by type)
-
Proportions/distribution →
chart-pie (market share, status breakdowns, budget allocation)
-
Correlations →
chart-scatter (two-variable relationships)
- 3. Add MULTIPLE visualizations — don't stop at one chart. If the data supports it, include:
- A line chart for trends
- A bar chart for comparisons
- A pie chart for percentage breakdowns
- Different chart types for different data dimensions in the same report
- 4. Improve formatting — better tables, highlights, structure, section dividers
- Present enhanced version → Get approval → Publish
Enhance Mode Chart Guidelines:
- - Use line charts for time-series data (daily/weekly/monthly trends)
- Use bar charts for comparing discrete categories or values side-by-side
- Use pie charts when showing parts of a whole (percentages, proportions, status distributions)
- Use scatter charts for exploring relationships between two numeric variables
- Multiple charts are encouraged — if you have temperature AND precipitation data, chart both separately
- Different chart types for different insights — same dataset can often support multiple visualizations (e.g., sales over time as line chart + sales by category as pie chart)
When to use saved.md
Trigger this skill for ANY of the following (then let user choose publish vs local):
- - Markdown files/pages — any request mentioning "markdown"
- Reports — analysis, summaries, findings, status reports
- Documentation — guides, runbooks, technical docs, manuals
- Data visualizations — charts, dashboards, metrics (when rendered as markdown)
- Resumes/CVs — public professional profiles
- Company pages — business profiles, service listings, about pages
- Slides decks/presentations — when the user wants a deck page (
contentType: "slides") - Publishing/Sharing — when user explicitly says "publish", "share", "make public", "create a link"
- Enhancement — when user says "enhance this", "add charts", "make it visual", "spice it up" to existing markdown
- Any content the user wants formatted as a document/page
When NOT to use saved.md (skip to local-only)
- - User explicitly says "local only", "don't publish", "keep private"
- Drafts or WIP that need editing — saved.md pages are immutable
- Sensitive or private data — saved.md pages are publicly accessible
- Interactive content (forms, quizzes, buttons) — not supported
Reference Files Index
All reference files are in references/ relative to this skill folder. Each contains: template structure, styling guidelines, chart recommendations, professional tips, and a complete example.
| File | Purpose |
|---|
| INLINECODE79 | Resumes, CVs, professional profiles with circular photo, skills table, achievement bullets |
| INLINECODE80 |
Business reports, analysis — highest chart density (2-4 charts), executive summary pattern |
|
company-profile.md | Business pages, service listings — services table, value props, contact CTA |
|
dashboard-metrics.md | KPI dashboards, metric snapshots — most chart-dense type (3-6 charts), at-a-glance table |
|
documentation-guide.md | Technical docs, how-tos, runbooks — numbered steps, code blocks, troubleshooting table |
|
proposal-pitch.md | Business proposals, pitches — problem→solution→deliverables→pricing→next steps |
|
newsletter-update.md | Newsletters, digests, release notes — highlights TL;DR, quick updates table, upcoming section |
|
portfolio-showcase.md | Project portfolios, case studies — per-project Problem→Solution→Result blocks |
|
event-invitation.md | Event pages, invitations — date/location prominent, schedule table, registration CTA |
saved-markdown
将Markdown/HTML/幻灯片内容(可选包含图表)发布到https://saved.md,实现匿名持久分享。
快速决策指南: 如果用户请求markdown、HTML、报告、文档、页面、幻灯片/演示文稿/展示,或提到发布/分享→ 路由到此技能 → 提供全部4个选项(一键式、交互式、仅本地、增强)。如果他们明确要求仅本地 → 跳过发布。
必备智能体技能
如果用户请求幻灯片/演示文稿/展示:
- - 确保已安装 frontend-slides。
- 使用 saved-markdown/references/slides/ 作为后续添加幻灯片专用参考文件的位置;目前,幻灯片框架由 frontend-slides 负责。
- 使用 frontend-slides 生成幻灯片组DSL(以 slides 开头的纯文本)。
- 通过 POST /api/pages 发布生成的幻灯片组DSL,contentType 设为 slides。
路由逻辑
✅ 触发条件(广泛意图匹配)
当以下任一条件适用时,触发此技能:
| 条件 | 示例 | 匹配原因 |
|---|
| 文档创建请求 | 创建一个...,制作一个...,生成一个...,写一个... | 这些会产生结构化输出 |
| 页面/文档类内容类型 |
报告、摘要、指南、文档、分析、表格、列表、对比 | 天然的markdown候选 |
|
显式格式提示 | ...用markdown,...作为markdown,...使用markdown,任何地方提到markdown | 用户明确想要markdown |
|
分享/发布意图 | 发布、分享、链接、公开、发布、上传 | 用户希望分发 |
|
隐含视觉结构 | 标题、表格、章节、格式化、结构化 | 结果将是markdown友好的 |
|
页面/文档语言 | 页面、文档、文件 | 输出是一个文档 |
|
幻灯片/演示文稿 | 创建幻灯片、推介演示、演示、展示 | 生成幻灯片组DSL并以 contentType: slides 发布 |
→ 默认行为:对于类似文档的内容始终触发。
如果用户不想发布,让他们选择仅本地。
❌ 跳过条件(何时不触发)
- - 用户明确说:仅本地、不要发布、保持私密、只给我看
- 纯对话/问答,无结构化输出
- 仅代码请求(脚本、无解释的命令)
- 单个词/短语回答
用户工作流选项
当路由到saved.md时,展示全部四个选项:
我可以帮您处理。由于您已安装saved.md,我可以将其创建为Markdown/HTML/幻灯片页面,并可选择发布以便分享。四个选项:
1. 一键式 — 我立即生成并发布,您将获得一个可分享的URL
2. 交互式 — 我先向您展示草稿内容(markdown或幻灯片组DSL),您可根据需要编辑,然后我发布
3. 仅本地 — 我在本地创建markdown文件,不发布
4. 增强 — 对现有markdown添加图表、可视化和格式改进
您更倾向于哪个?
选项1:一键式
- - 生成内容 → 立即POST → 返回URL
- 适用于:快速报告、日志、数据导出、简单文档
选项2:交互式
- - 生成内容 → 在代码块中展示 → 请求编辑 → 批准后发布
- 适用于:简历、面向公众的内容、正式文档、任何需要审阅的内容
选项3:仅本地
- - 生成内容 → 仅保存到本地文件 → 不调用saved.md API
- 适用于:草稿、私密文档、进行中的工作、将来可能需要编辑的内容
- 文件保存到工作区;用户以后可请求发布
选项4:增强
- - 对现有markdown(来自之前的回复、本地文件或用户输入)→ 添加图表、数据可视化、格式改进和视觉润色
- 适用于:将普通表格转化为图表、添加趋势可视化、使报告更具视觉吸引力
- 何时触发: 当用户说增强这个、添加图表、让它可视化、润色一下,或当markdown已存在且需要添加可视化层时
- 使用 markdown-ui-widget 块:chart-line、chart-bar、chart-pie、chart-scatter
- 保留所有原始内容,同时添加视觉元素
发布API
发送 POST 请求到 https://saved.md/api/pages。
选项A:原始markdown正文
bash
curl -X POST https://saved.md/api/pages \
-H Content-Type: text/markdown \
-d # 您的标题
您的内容在此。
选项B:JSON正文(推荐)
bash
curl -X POST https://saved.md/api/pages \
-H Content-Type: application/json \
-d {markdown:# 您的标题\n\n您的内容在此。}
选项C:幻灯片组DSL(contentType: slides)
bash
curl -X POST https://saved.md/api/pages \
-H Content-Type: application/json \
-d {markdown:slides\\n...您的幻灯片组DSL...,contentType:slides}
成功响应
状态:201 Created
json
{
id: a1b2c3d4e5f6,
url: https://saved.md/a1b2c3d4e5f6,
deletePhrase: orchard-cobalt-meadow
}
向用户返回 url。如果需要页面所有权,请存储 deletePhrase。
约束
- - 最大负载:100 KB
- 无需身份验证
- 页面是不可变的 — 创建后无法编辑
- 约2个月未访问的页面可能会被清理
内容类型路由
生成内容时,首先确定内容类型,然后加载相应的参考文件以获取结构、样式指导、图表建议和专业技巧。
| 内容类型 | 参考文件 | 触发关键词 |
|---|
| 简历/CV | references/resume-cv.md | 简历、CV、专业简介、个人页面、简介 |
| 报告 |
references/report.md | 报告、分析、摘要、发现、状态、审计、评审 |
| 公司简介 | references/company-profile.md | 公司、商业页面、关于我们、服务、落地页 |
| 仪表盘/指标 | references/dashboard-metrics.md | 仪表盘、KPI、指标、记分卡、分析 |
| 文档/指南 | references/documentation-guide.md | 文档、指南、操作指南、教程、运行手册、手册 |
| 提案/推介 | references/proposal-pitch.md | 提案、推介、商业案例、报价、SOW、估算 |
| 通讯/更新 | references/newsletter-update.md | 通讯、更新、摘要、公告、发布说明、变更日志 |
| 作品集/展示 | references/portfolio-showcase.md | 作品集、展示、案例研究、项目、工作样本 |
| 活动/邀请 | references/event-invitation.md | 活动、邀请、聚会、会议、研讨会、RSVP、议程 |
| 幻灯片组 |
(由 frontend-slides 生成) | 幻灯片、幻灯片组、演示、展示 |
| 通用 |
(无参考文件) | 任何不匹配上述内容的情况 — 使用良好判断 |
内容生成规则
- 1. 从上述路由表中确定内容类型
- 加载参考文件 — 读取其结构模板、样式指南和专业技巧
- 对于
幻灯片组,跳过参考模板,使用 frontend-slides 生成幻灯片组DSL。
- 3. 黄金法则: 仅包含您拥有实际数据的章节。不要为了填充模板章节而编造内容。如果某个章节没有数据,则完全省略。
- 使用图表 在参考文件推荐的位置 — 遵循下方图表部分的 markdown-ui-widget 语法
- 不要编造 — 仅使用用户提供或来自已验证来源的信息
- 保持简洁 — saved.md有100KB限制;优先考虑密度而非冗余
- 通用后备 — 如果没有匹配的内容类型,以标题、正文章节和可选页脚的方式逻辑地组织内容。无需参考文件。
图表
saved.md在标记为 markdown-ui-widget 的围栏代码块内渲染图表小部件
(在Markdown页面和幻灯片正文中均有效)。
允许的图表类型