copilot/skills/symposium-publish/SKILL.md

SKILL

Publish Markdown to Symposium

Require one existing Markdown source file. When the user asks to delete, remove, or withdraw its current Symposium page, do not generate HTML. Run the host wrapper with only the vault-relative source-note path. Obsidian reads the note’s current identity and opens its existing management modal; the user alone chooses Update or Delete. Never tell the user to delete the page at its public URL.

For publishing or updating, finish a complete, self-contained, passive HTML document before asking Obsidian to review it. Render source-specific content such as Mermaid and Obsidian Bases into static HTML or SVG, embed images, and include no scripts, frames, forms, handlers, redirects, or external assets. Treat YAML frontmatter as note metadata: never render the raw frontmatter block as page content. The exact UTF-8 HTML must not exceed 10485760 bytes.

Write those final bytes to a new unique .html file under SYMPOSIUM_WORKSPACE_ROOT/.symposium/handoffs/, creating that directory first when it does not exist. Do not show a prose substitute or ask for confirmation in chat. Instead run the host wrapper with exactly two vault-relative paths: the source note and the staged HTML.

On macOS or Linux:

sh "/absolute/path/to/this/skill/directory/symposium-publish.sh" "Notes/source.md" ".symposium/handoffs/unique.html"

For withdrawal, omit the staged-HTML argument:

sh "/absolute/path/to/this/skill/directory/symposium-publish.sh" "Notes/source.md"

On Windows, use the .cmd wrapper (prefix it with & in PowerShell):

& "/absolute/path/to/this/skill/directory/symposium-publish.cmd" "Notes/source.md" ".symposium/handoffs/unique.html"

Omit the staged-HTML argument on Windows for withdrawal as well.

With only the source path, the wrapper blocks while Obsidian shows its host-owned Update/Delete management modal. With a staged HTML path, it blocks while Obsidian consumes the artifact and shows its source, title, and a link to a sandboxed local-browser rendering of the exact captured page. Obsidian rejects active or externally loaded content, prevents navigation from the browser preview, removes the original artifact, removes its temporary browser preview after review, and alone reads the current note identity to choose whether confirmation publishes or updates; never choose an action or document id.