---
name: skoa-blog-post
description: Writes and publishes a bilingual (EN/ES) article on the SKOA blog following the repo conventions: article HTML files, posts.json metadata, images, build, prerender and SEO checks. Use when asked to write, translate or publish a blog post or tutorial for www.skoa.online.
---

# Publish an article on the SKOA blog

The blog is static. `scripts/build-blog.mjs` reads `src/content/posts.json` and the article HTML in `content/blog/<lang>/<slug>.html`, then writes `public/blog/...` and `public/es/blog/...`, the RSS feeds and the sitemap. Vercel builds `main` on push.

## Files to create

1. `content/blog/en/<slug>.html` and `content/blog/es/<slug>.html`: complete pages. Copy the structure of the newest article (head with title, description, Open Graph, article JSON-LD; header with `nav-right`; `main.container` with crumbs, hero, summary strip, sidebar table of contents and `article#contenido`; footer ending in `</div></footer>`). The build injects canonical, hreflang, the language switch, the tracker and the social links; leave those placeholders as in the template.
2. Assets under `public/blog/<slug>/assets/`: `hero.svg` and `hero-es.svg` (1060×880), `social.png` and `social-es.png` (1200×630). Reuse the neo-brutalist style: cream `#F4F1E9` or black `#0E0E0C`, thick borders, hard shadows, accents yellow `#FFE600`, pink `#FF3EA5`, blue `#4D5BFF`, teal `#00E5C0`.
3. Entry at the top of `src/content/posts.json` (newest first): `slug, title, description, date (YYYY-MM-DD), author, category, tags, readingMinutes, image, imageAlt, socialImage` and `translations.es` with the Spanish `title, description, category, tags, image, imageAlt, socialImage`. Add `updated` when revising a published post.

## Writing rules

- Practical and honest: what was built, with what, how to verify it, what it costs and where it breaks. No empty superlatives, no invented numbers; mark unknowns as `[TO CONFIRM]` and resolve them before publishing.
- Each article links the home with the anchor text "SKOA" and the blog index; internal links use absolute paths (`/blog/...`) so the build can localize them.
- Target one long-tail query per article (for example "crewai production", "langfuse tutorial", "claude code agents") and use it in the title, the first paragraph and one heading.
- Code blocks use the `code-label` + copy button markup from the existing articles.

## Publish and verify

1. `npm run blog:build`, then `npm run build` (type check, Vite build, prerender) and `npm test`.
2. Open both language versions locally (`npm run preview`) and check the hero image, table of contents, code copy buttons and language switch.
3. Commit, push `main`, wait for Vercel, then `npm run seo:check`: every sitemap URL must answer 200 and the article JSON-LD must carry the SKOA publisher.
4. Share with `?utm_source=<network>&utm_medium=social&utm_campaign=<slug>` so `/admin` attributes the visits.
