Publish immutable, anonymous pages to https://saved.md. Pages can be Markdown (with chart widgets), HTML (sanitized static pages with CSS), or JSX (sandboxed interactive React).
Frontmatter decides when to use this skill.
Everything below defines how to execute once triggered.
After triggering, pick the mode that best matches user intent. If unclear, default to one-shot and mention that other modes exist.
ModeWhenWhat happensOne-shotQuick reports, logs, exportsGenerate → publish → return URLInteractiveResumes, landing pages, anything user-facingGenerate → show draft → user edits → publishLocal-onlyUser explicitly wants no publishingSave .md / .html / .jsx, no API callEnhanceExisting markdown needs charts or polishRead → enhance → publish new URL
Pages are immutable — edits always produce a new URL.
templates/INDEX.mdtemplates/create-template.mdtemplates/markdowns/ for markdowntemplates/htmls/ for htmltemplates/jsx/ for jsxtemplates/INDEX.mdFormatUse whencontentTypeMarkdownReports, docs, dashboards, resumes, charts"markdown" (or omit)HTMLLayout-heavy pages, visual polish, static UI"html"JSXInteractivity, filters, state, dynamic charts"jsx"
If using HTML or JSX, always explicitly set contentType.
Otherwise the page renders incorrectly.
Use this when generating structured Markdown or HTML content.
Content typeTriggersTemplateResume / CVresume, CV, profileresume-cv.mdReportreport, analysis, findingsreport.mdCompany profilecompany, about, servicescompany-profile.mdDashboardKPIs, metrics, scorecarddashboard-metrics.mdDocumentationdocs, guide, manualdocumentation-guide.mdProposalproposal, pitch, quoteproposal-pitch.mdNewsletternewsletter, digest, changelognewsletter-update.mdPortfolioportfolio, projectsportfolio-showcase.mdEventevent, invitation, RSVPevent-invitation.mdGenericeverything elsefreehand
Never invent content to fill sections.
Omit anything without real data.
When a template is selected:
templates/If the user already provided full content, skip template browsing and go straight to generation.
When enhancing markdown:
markdown-ui-widget$, %, K, etc.)Template guide: templates/charts.md
Before publishing:
contentTypereact, react-dom)Template guide: templates/validation.md
bash
python scripts/publish.py --file <path> --content-type <markdown|html|jsx> --title "<title>"
Use POST https://saved.md/api/pages with JSON.
Required/expected payload fields:
markdown (string): page source body for markdown, html, or jsx pagescontentType (string): "markdown", "html", or "jsx"Example payload:
json
{
"markdown": "# My Page\n\nPublished from skill",
"contentType": "markdown"
}
For markdown pages, contentType may be omitted, but setting it explicitly is
recommended for consistency.
When users request edits to an existing saved.md URL:
GET /api/pages/{id} and read markdown + contentTypemarkdownPOST /api/pages using the edited markdown and the same contentTypeNever imply in-place updates are possible.