Generate browser-viewable HTML previews from markdown, plain text, and Mermaid diagrams. Auto-validates diagrams, applies professional styling, and opens in default browser. Use when agents need to preview documentation, visualizations, or formatted content.
Generates browser-viewable HTML from markdown with Mermaid diagrams. Automatically validates all diagrams in a single pass, applies professional styling, and opens the preview in your default browser.
/plugin marketplace add rp1-run/rp1/plugin install rp1-run-rp1-base-plugins-base@rp1-run/rp1This skill is limited to using the following tools:
EXAMPLES.mdTEMPLATES.mdGenerate self-contained HTML files from markdown content and automatically open them in the user's default browser.
Use this skill when you need to:
Trigger scenarios: markdown preview, HTML generation, browser preview, document visualization, diagram rendering.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| content | string | Yes | - | Markdown, plain text, or Mermaid content to render |
| title | string | No | "Markdown Preview" | HTML page title |
| theme | string | No | "github" | Template theme: "github", "dark", or "minimal" |
Extract content from agent context or parameters. The skill expects markdown content as a string input.
Efficient Validation Strategy:
Instead of validating each diagram individually, validate the entire markdown document at once:
Write markdown to temp file:
TEMP_MD=$(mktemp /tmp/markdown-preview.XXXXXX.md)
echo "$CONTENT" > "$TEMP_MD"
Validate all diagrams in one pass:
rp1 agent-tools mmd-validate "$TEMP_MD"
EXIT_CODE=$?
Check validation result:
EXIT_CODE = 0: All diagrams valid, proceed with generationEXIT_CODE = 1: One or more diagrams invalidHandle validation failures:
if [ $EXIT_CODE -ne 0 ]; then
# Extract error message from validation output
# Prepend warning to markdown content:
CONTENT="⚠️ **Mermaid Validation Warning**: Some diagrams have syntax errors. They may not render correctly in the preview.\n\n$CONTENT"
# Continue with HTML generation (non-blocking)
fi
Clean up temp file:
rm -f "$TEMP_MD"
Why This Approach is Better:
rp1 agent-tools mmd-validate for validationError Handling:
Dependencies:
agent-tools mmd-validate command)Template Selection:
Based on theme parameter, select appropriate template from TEMPLATES.md:
Template Loading:
Template Processing:
{{TITLE}} with actual page title{{MARKDOWN_CONTENT}} with markdown contentHTML Features (embedded in templates):
See TEMPLATES.md for complete HTML structure and styling details.
Filename Generation:
TIMESTAMP=$(date +%s%N)
FILENAME="markdown-preview-${TIMESTAMP}.html"
TEMP_DIR="${TMPDIR:-/tmp}"
FILE_PATH="${TEMP_DIR}/${FILENAME}"
File Operations:
Platform-specific temp directories:
$TMPDIR or /tmp%TEMP%Platform Detection:
# Detect platform via $OSTYPE
if [[ "$OSTYPE" == "darwin"* ]]; then
PLATFORM="macos"
OPEN_CMD="open"
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
PLATFORM="linux"
OPEN_CMD="xdg-open"
elif [[ "$OSTYPE" == "msys" || "$OSTYPE" == "cygwin" || "$OSTYPE" == "win32" ]]; then
PLATFORM="windows"
OPEN_CMD="start"
else
PLATFORM="unknown"
OPEN_CMD=""
fi
Browser Opening:
if [ -n "$OPEN_CMD" ]; then
$OPEN_CMD "$FILE_PATH" 2>&1
if [ $? -eq 0 ]; then
BROWSER_OPENED=true
else
BROWSER_OPENED=false
# Log error but continue (non-blocking)
fi
else
BROWSER_OPENED=false
# Log warning: unknown platform
fi
Error Handling:
browserOpened=false, but still return successOutput Format:
{
"status": "success" | "error",
"filePath": "/tmp/markdown-preview-1699464000000.html",
"message": "Preview generated successfully.",
"diagramsValidated": true,
"browserOpened": true,
"theme": "github"
}
Success Response:
Error Response:
{
"status": "error",
"message": "Failed to write HTML file: Permission denied",
"filePath": null,
"diagramsValidated": false,
"browserOpened": false
}
Empty/Whitespace Input:
File Write Errors:
Validation Script Unavailable:
Browser Launch Failures (non-blocking):
Malformed Markdown (best-effort):
Invalid Theme:
Invalid Mermaid Diagrams (non-blocking):
From PR Visualizer Agent:
## Generate HTML Preview
After creating the markdown file, use the markdown-preview skill to generate the HTML preview.
Use the Skill tool:
skill: "rp1-base:markdown-preview"
Read the generated markdown file and pass content:
- content: Read from {RP1_ROOT}/work/pr_reviews/<pr-id>-visual.md
- title: "PR Visualization for PR #{pr-number}"
- theme: "github"
The skill will:
1. Write markdown to temp file
2. Validate ALL Mermaid diagrams in one pass using rp1 CLI tool
3. Generate self-contained HTML with professional styling
4. Save to temp directory
5. Auto-open in browser
6. Return file path for logging
Log the file path and report to user:
"✓ Preview generated: {filePath}"
From Documentation Agent:
Use skill: "rp1-base:markdown-preview"
Pass documentation content:
- content: Generated markdown documentation
- title: "Project Documentation"
- theme: "github"
Skill validates all diagrams once and generates HTML.
Browser opens automatically.
Optimized Performance (<5 seconds total):
Typical Content:
Performance Improvement:
Internal:
agent-tools mmd-validate)External (embedded via CDN):
System Requirements:
EXECUTE IMMEDIATELY:
No user interaction required during execution. Complete the entire workflow autonomously.