Files
markusgraf_ch/openspec/changes/archive/2025-10-31-add-blog-section/specs/blog-content/spec.md
T
gurixandClaude 0cc6e6a75e chore: archive completed OpenSpec change add-blog-section
Archive blog section proposal and update main specs.
Specs created:
- openspec/specs/blog-content/
- openspec/specs/blog-templates/

Archived to: openspec/changes/archive/2025-10-31-add-blog-section/

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-31 09:34:57 +01:00

3.7 KiB

Blog Content Structure

ADDED Requirements

Requirement: Blog Section Organization

Blog posts SHALL be organized in a dedicated content/blog/ directory following Hugo's content organization conventions.

Scenario: Blog section exists in content directory

Given the Hugo site structure When examining the content directory Then a content/blog/ directory SHALL exist And section index files _index.de.md and _index.en.md SHALL exist in content/blog/ And these index files SHALL contain appropriate front matter (title, description)

Scenario: Blog posts use page bundles

Given a blog post to be published When adding the post to the site Then the post SHALL be organized as a page bundle (directory with index.de.md or index.en.md) And the bundle directory name SHALL be URL-friendly (lowercase, hyphens, no special characters) And any post-specific assets (images, files) CAN be stored within the bundle directory


Requirement: Blog Post Front Matter

Each blog post SHALL include properly structured front matter with essential metadata.

Scenario: Blog post front matter is complete

Given a blog post markdown file When the post is processed by Hugo Then the front matter SHALL include a title field And the front matter SHALL include a date field in ISO 8601 format (YYYY-MM-DD) And the front matter MAY include a description or summary field for excerpts And the front matter MAY include a draft field to control publication status

Scenario: First blog post is ready

Given the Notion article "KI Generierte Website - ein Praxisbeispiel" When converting it to Hugo format Then a blog post SHALL exist at content/blog/ki-generierte-website-praxisbeispiel/index.de.md And the post SHALL contain the full article content from Notion And the front matter SHALL include title "KI Generierte Website - ein Praxisbeispiel" And the front matter SHALL include an appropriate publication date


Requirement: Multilingual Blog Support

Blog content SHALL support both German and English following the site's internationalization pattern.

Scenario: Blog section metadata is multilingual

Given the blog section When accessing the blog in different languages Then content/blog/_index.de.md SHALL exist with German metadata And content/blog/_index.en.md SHALL exist with English metadata And both SHALL have appropriate translated titles and descriptions

Scenario: Blog posts can exist in multiple languages

Given a blog post When translations are available Then the post MAY have both index.de.md and index.en.md in the same bundle And Hugo SHALL serve the appropriate language version based on the URL path And language switching SHALL work between translated blog posts


Requirement: Content Formatting

Blog post content SHALL be written in Markdown with proper formatting support.

Scenario: Markdown content renders correctly

Given a blog post with Markdown content When Hugo processes the post Then headings (H1-H6) SHALL be rendered correctly And paragraphs, lists, and emphasis SHALL be formatted properly And code blocks with syntax highlighting SHALL be supported And links and images SHALL be rendered correctly And HTML content SHALL be allowed (Hugo's unsafe renderer is enabled in config)

Scenario: Special characters and formatting are preserved

Given blog post content with German special characters (ä, ö, ü, ß) When the post is rendered Then all special characters SHALL display correctly And quotation marks and em dashes SHALL be preserved And UTF-8 encoding SHALL be maintained throughout