import type { DesignSkill } from "./design-skill.js"; export const blogPost: DesignSkill = { name: "blog-post", scenario: "content", description: "Blog article layout — title, author metadata, featured image, prose body with headings/images/quotes, related posts. Single-page, reading-optimized typography with comfortable measure.", outputKind: "html", workflow: `# Blog Post Skill Produce a single blog article page with reading-optimized typography. ## Phase 1 — Structure \`\`\`html
Category

Article Title That Is Specific and Engaging

Author Name Month DD, YYYY N min read
...
Image caption (optional)
\`\`\` ## Phase 2 — Typography \`\`\`css .blog-post { max-width: 680px; margin: 0 auto; padding: 64px 24px; } .post-header { margin-bottom: 32px; } .post-category { font-size: 13px; font-weight: 600; color: var(--accent); text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 12px; } .post-header h1 { font-size: 40px; font-weight: 700; line-height: 1.2; letter-spacing: -0.02em; margin-bottom: 16px; } .post-meta { display: flex; gap: 16px; font-size: 14px; color: var(--muted); } .post-hero { margin: 0 -24px 40px; } .post-hero img { width: 100%; height: 400px; object-fit: cover; border-radius: 12px; } .post-hero figcaption { font-size: 13px; color: var(--muted); text-align: center; margin-top: 8px; } /* Prose — comfortable reading measure */ .post-content { font-size: 18px; line-height: 1.8; color: var(--fg); } .post-content p { margin: 24px 0; } .post-content h2 { font-size: 28px; font-weight: 600; margin: 48px 0 16px; } .post-content h3 { font-size: 22px; font-weight: 600; margin: 36px 0 12px; } .post-content blockquote { border-left: 3px solid var(--accent); padding: 8px 20px; margin: 32px 0; font-style: italic; color: var(--muted); } .post-content ul, .post-content ol { padding-left: 24px; margin: 16px 0; } .post-content li { margin: 8px 0; } .post-content img { max-width: 100%; border-radius: 8px; margin: 24px 0; } .post-content code { font-family: var(--font-mono); font-size: 0.9em; background: var(--surface); padding: 2px 6px; border-radius: 4px; } .post-content pre { background: var(--surface); border: 1px solid var(--border); border-radius: 8px; padding: 20px 24px; overflow-x: auto; font-family: var(--font-mono); font-size: 15px; line-height: 1.6; margin: 24px 0; } /* Tags */ .post-tags { display: flex; flex-wrap: wrap; gap: 8px; margin: 48px 0; padding-top: 32px; border-top: 1px solid var(--border); } .post-tag { padding: 4px 12px; background: var(--surface); border-radius: 999px; font-size: 13px; color: var(--muted); } /* Related posts */ .related-posts { margin-top: 48px; } .related-posts h3 { font-size: 20px; font-weight: 600; margin-bottom: 16px; } .related-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 16px; } .related-card { border: 1px solid var(--border); border-radius: 8px; overflow: hidden; } .related-card img { width: 100%; height: 140px; object-fit: cover; } .related-card-content { padding: 16px; } .related-card-content h4 { font-size: 15px; font-weight: 600; margin-bottom: 4px; } .related-card-content time { font-size: 12px; color: var(--muted); } \`\`\` ## Phase 3 — Content Rules - Article body: 800-2000 words of meaningful content (no lorem ipsum) - Every heading is specific and informative - Include at least one blockquote and one code block - Feature image is a gradient shape if no real image - Author bio is not generic — use a plausible name and role`, };