Official documentation and knowledge base for RenderBrains.
Built on Obsidian + Quarto + Python CLI:
vault/— personal Obsidian workspace (local only, gitignored)wiki/— LLM-synthesized knowledge pages (git-tracked)tutorials/,how-to/,reference/,explanation/— published site content (Quarto/QMD)scripts/— sync, lint, and build automation
The published site is available at renderbrains.com.
git clone https://github.com/sungkukpark/renderbrains-docs.git
cd renderbrains-docs
uv syncmake runThis runs sync → lint → build in sequence. All three must pass before committing to main.
make sync # wiki/ → site content conversion
make lint # validate frontmatter and links
make build # quarto render → _site/
make preview # quarto preview (live reload)
make clean # remove _site/ and __pycache__renderbrains-docs/
├── index.qmd # Home page
├── tutorials/ # Step-by-step learning guides
├── how-to/ # Task-oriented recipes
├── reference/ # API references and lookup material
├── explanation/ # Concepts, architecture, ADRs
├── assets/ # Site assets (logo, CSS, favicon)
│
├── wiki/ # LLM-maintained knowledge pages (git-tracked)
│ ├── index.md # Wiki page catalog
│ ├── log.md # Operation log (append-only)
│ └── *.md # Synthesized knowledge pages
│
├── vault/ # Personal Obsidian workspace (local only, gitignored)
│ ├── inbox/ # Quick capture — never published
│ ├── references/ # Raw reference notes (immutable)
│ ├── daily/ # Daily notes
│ └── assets/ # Images, diagrams, attachments
│
├── scripts/
│ ├── sync.py # wiki/ → site content sync
│ ├── lint.py # metadata and link validation
│ └── utils/
│ └── frontmatter.py # shared parsing utilities
│
├── _quarto.yml # Quarto site configuration
├── CLAUDE.md # Publishing rules and contract
├── ARCHITECT.md # LLM wiki operating pattern
├── pyproject.toml # Python dependencies
├── Makefile # Convenience commands
└── .github/workflows/ # CI/CD
| Location | Purpose | Git-tracked |
|---|---|---|
vault/inbox/ |
Quick capture, raw ideas | No |
vault/references/ |
External source notes | No |
vault/daily/ |
Daily notes | No |
wiki/ |
Refined knowledge pages ready to publish | Yes |
Write freely in vault/ using any Obsidian feature. When a note is ready to share with the team or publish to the site, move it to wiki/ and add the required frontmatter.
Every note in wiki/ that should be published must include:
---
title: "Frame Graph"
slug: "frame-graph"
publish: true
category: "explanation"
status: "stable"
updated: 2026-04-06
---| Field | Required | Description |
|---|---|---|
title |
Yes | Human-readable title |
slug |
Yes | URL-safe identifier (lowercase, kebab-case) |
publish |
Yes | Set to true to publish |
category |
Yes | One of the four allowed values below |
status |
Yes | One of the four allowed values below |
updated |
Yes | Last modified date (YYYY-MM-DD) |
summary |
No | One-sentence description shown in listings |
tags |
No | List of topic tags |
owner |
No | Responsible team or person |
Allowed category values:
| Value | Output folder | Use for |
|---|---|---|
tutorials |
tutorials/ |
Step-by-step learning guides |
how-to |
how-to/ |
Task-specific recipes |
reference |
reference/ |
API docs, config schemas, lookup tables |
explanation |
explanation/ |
Concepts, architecture, ADRs |
Allowed status values: draft, review, stable, archived
- Lowercase, kebab-case, ASCII only
- Must be unique across all published notes
- Used as the output filename:
slug: "frame-graph"→explanation/frame-graph.qmd - Do not change a published slug casually — it breaks existing links
Use Obsidian wiki links freely inside vault/ and wiki/:
See also [[Frame Graph]] and [[Shader Compilation Pipeline|shader pipeline]].The sync script resolves these to proper relative links automatically:
See also [Frame Graph](../explanation/frame-graph.qmd) and [shader pipeline](../how-to/shader-compilation-pipeline.qmd).Rules:
- If the link target has no matching note → warning, rendered as plain text
- If the link target matches multiple published notes → sync fails (ambiguous link; fix by giving notes unique titles)
- If the link target exists but
publish: false→ warning, rendered as plain text
Obsidian image embeds are converted to Markdown image syntax:
![[20260406-frame-graph-overview.png]]
→ Place all images in vault/assets/. The sync script copies referenced assets to the publish output automatically.
Naming convention for assets: YYYYMMDD-short-description.ext
Obsidian note embeds (![[SomeNote]]) cannot be rendered in Quarto. The sync script replaces them with an HTML comment and prints a warning:
<!-- EMBED: SomeNote (not rendered in published output) -->Remove or rewrite note embeds before setting publish: true.
| Feature | Behavior |
|---|---|
Note embeds ![[Note]] |
Replaced with HTML comment — rewrite manually |
Block references ![[Note#^block]] |
Not supported — rewrite manually |
| Dataview queries | Not rendered — remove before publishing |
| Canvas files | Not published |
Callouts > [!note] |
Supported in Quarto — sync preserves them |
| Fenced code blocks | Fully preserved |
---
title: "Frame Graph"
slug: "frame-graph"
publish: true
category: "explanation"
tags:
- rendering
- engine
status: "review"
updated: 2026-04-06
owner: "graphics-team"
summary: "Overview of frame graph motivation, structure, and scheduling model."
---
# Frame Graph
A frame graph organizes render passes and resource lifetimes explicitly.
See also [[Deferred Rendering Overview]] and [[Shader Compilation Pipeline]].
## Why it matters
- Makes dependencies visible
- Enables transient resource reuse
- Improves scheduling clarity
![[20260406-frame-graph-overview.png]]Write freely in vault/. When a note is stable enough to publish, place it in wiki/ with the required frontmatter.
make syncThe sync script:
- Finds all
publish: truenotes inwiki/ - Converts
[[wiki links]]to relative Quarto links - Copies output to
{category}/{slug}.qmd - Copies referenced assets to
assets/ - Fails loudly on ambiguous links or missing required fields
make lintValidates:
- Required frontmatter fields present and valid
statusandcategoryvalues allowedupdateddate is valid ISO format (YYYY-MM-DD)- Slug uniqueness across all published output
- No unresolved wiki links remaining in published files
make preview # live preview at localhost:4200
make build # full render to _site/- Direct commits allowed in
wiki/for minor updates - PR required for site content,
scripts/,_quarto.yml, CI files - CI runs
sync → lint → buildon every PR
A note is publishable only when:
publish: trueis set- All required frontmatter fields are present and valid
make synccompletes without errorsmake lintexits 0
Notes in vault/inbox/ and vault/daily/ are never published, even with publish: true.
- Branch from
main:git checkout -b docs/your-topic - Author in
vault/, refine inwiki/ - Run
make run— all three steps must pass - Open a PR; at least one team review required for changes to site content,
scripts/, or_quarto.yml
- CI runs on every PR touching
wiki/, site content folders,scripts/, or_quarto.yml - Publish runs on merge to
main, deploying to AWS S3 (renderbrains.com)
See .github/workflows/ for details.