Install
$ agentstack add skill-marcoax-skills-md-to-blog-html ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
MD to Blog HTML
Converts a Markdown source file into the HTML format used in the News.description field on https://www.magutti.com/.
The canonical output format is documented by the reference at reference/template.html — consult it if you need to extend the converter for unsupported constructs.
Quick start
python3 .claude/skills/md-to-blog-html/scripts/convert.py path/to/article.md
Writes path/to/article.html next to the source and copies the HTML to the macOS clipboard (ready to paste into the admin News form).
Flags:
--no-clipboard— skippbcopy--stdout— also print the HTML to stdout
Source MD conventions
| Markdown | HTML output | |---|---| | # Title | stripped (title lives in News.title) | | ## Section | ` (between sections) + … | | ### Sub | … | | ::: intro … ::: | … | | > line (one or more contiguous lines) | … | | ``…` | … (HTML-escaped) | | - item / * item | … | | 1. item | … | | Plain paragraph | … | | **bold** | … | | ` code | … | | [txt](url) external | txt | | [txt](url) magutti.com or relative | txt | | — (em-dash) | — | | Orphan &, | &, <, >` |
Example
Input (article.md):
# My Article Title
::: intro
This article explores **a real-world case** of debugging with AI.
:::
## The Problem
After migrating, this warning appeared:
`bson_append_array(): invalid array detected`
> **AI Conclusion:** None of the proposed solutions eliminated the warning.
## The Lesson
See the [StackOverflow thread](https://stackoverflow.com/questions/69670396) for details.
Output (article.html):
This article explores a real-world case of debugging with AI.
The Problem
After migrating, this warning appeared:
bson_append_array(): invalid array detected
AI Conclusion: None of the proposed solutions eliminated the warning.
The Lesson
See the StackOverflow thread for details.
Workflow
- Marco writes the article in Markdown using the conventions above.
- Run the converter — HTML lands in clipboard and on disk.
- Ask the user: "Do you also want SEO title and meta description?" (yes/no)
- If yes: read the source MD, generate SEO fields, and print them in chat for copy-paste (see "SEO generation" below).
- Paste the HTML into the
descriptionfield of the News record in the admin (and the SEO fields if generated). - Save.
If a construct is missing, compare the actual blog output against reference/template.html and extend scripts/convert.py (the parser is line-based and easy to extend).
SEO generation
Only after the user confirms in step 3. Produce 2–3 variants for each field directly in chat (no file write — user copies and pastes the one they prefer):
- SEO title — 50–60 chars, includes the primary keyword/topic of the article.
- SEO meta description — 150–160 chars, summarises the article in one sentence, includes the primary keyword.
Tone
Technical, restrained, factual. No marketing emphasis: avoid superlatives ("ultimate", "powerful", "amazing"), no clickbait ("you won't believe…"), no hype verbs ("master", "unlock", "transform"), no emoji, no hard CTAs. Describe what the article covers, not how exciting it is. Match the article's own register.
Output format
SEO title variants:
1. (NN chars)
2. (NN chars)
3. (NN chars)
SEO description variants:
1. (NNN chars)
2. (NNN chars)
3. (NNN chars)
Each variant must include the character count to confirm it fits the range. Match the article's language — if the MD is in Italian, generate Italian SEO fields.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: marcoax
- Source: marcoax/skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.