Skip to content

feat(export): Zola static site export with multi-project namespacing#136

Merged
avrabe merged 1 commit intomainfrom
feat/zola-export
Apr 13, 2026
Merged

feat(export): Zola static site export with multi-project namespacing#136
avrabe merged 1 commit intomainfrom
feat/zola-export

Conversation

@avrabe
Copy link
Copy Markdown
Contributor

@avrabe avrabe commented Apr 13, 2026

Summary

New export format for integrating rivet artifacts into existing Zola static sites.

Core principle: additive-only, namespaced — never touches config.toml, sass/, or existing content.

# Export requirements to your Zola site
rivet export --format zola --output ./site --prefix rivet \
  --filter '(= type "requirement")'

# Export STPA subset as a separate section  
rivet export --format zola --output ./site --prefix rivet-safety \
  --filter '(has-tag "stpa")'

# Include shortcodes for embedding in hand-written docs
rivet export --format zola --output ./site --prefix rivet --shortcodes

What it writes

Path Content
content/<prefix>/artifacts/*.md One page per artifact with TOML frontmatter
data/<prefix>/artifacts.json Full artifact data for load_data()
data/<prefix>/stats.json Type/status counts
templates/shortcodes/rivet_*.html Optional shortcodes (--shortcodes)

Multi-project support

Multiple --prefix invocations coexist in the same site — each gets its own content/ and data/ subdirectory.

Shortcodes

  • {{ rivet_artifact(id="REQ-001", prefix="rivet") }} — inline artifact card
  • {{ rivet_stats(prefix="rivet") }} — type/status breakdown

Implements: REQ-007

Test plan

  • Export 47 requirements with --filter '(= type "requirement")'
  • Second export with --prefix rivet-safety --filter '(has-tag "stpa")' — 6 artifacts
  • Both prefixes coexist in same site directory
  • Generated pages have valid TOML frontmatter
  • JSON data files are valid
  • Shortcodes written with --shortcodes flag

🤖 Generated with Claude Code

New export format: `rivet export --format zola --output <site> --prefix <name>`

Features:
- Writes content/<prefix>/artifacts/*.md with TOML frontmatter
- Writes data/<prefix>/artifacts.json and stats.json for Zola load_data()
- --prefix enables multiple projects/slices in the same Zola site
- --filter uses s-expression to select artifact subset
- --shortcodes installs rivet_artifact and rivet_stats Zola shortcodes
- Additive-only: never modifies config.toml, sass/, or existing content
- Taxonomy-ready frontmatter (artifact_type, artifact_status, tags)

Examples:
  rivet export --format zola --output ./site --prefix rivet
  rivet export --format zola --output ./site --prefix safety --filter '(has-tag "stpa")'
  rivet export --format zola --output ./site --prefix rivet --shortcodes

Implements: REQ-007
Refs: FEAT-001

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark 'Rivet Criterion Benchmarks'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20.

Benchmark suite Current: 1c9e0bf Previous: f958a7e Ratio
store_insert/10000 20047393 ns/iter (± 2663616) 14896974 ns/iter (± 1034478) 1.35
validate/10000 20804496 ns/iter (± 1862109) 10528470 ns/iter (± 743244) 1.98

This comment was automatically generated by workflow using github-action-benchmark.

@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 13, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@avrabe avrabe merged commit af845df into main Apr 13, 2026
15 of 18 checks passed
@avrabe avrabe deleted the feat/zola-export branch April 13, 2026 01:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant