Prerequisites
- Cursor editor installed
- Access to the
cerulion-docsrepository
Project rules
Create.cursor/rules.md in the repository root:
Copy
# Cerulion documentation β Cursor rules
## Product context
Cerulion is a high-performance middleware for robotics and real-time systems (closed alpha).
- **Stack**: Rust binary, distributed via Homebrew / install script
- **Core features**: Zero-copy pub/sub via iceoryx2 (shared memory), network transport via Zenoh, ROS2-compatible message types
- **Target users**: Robotics engineers and embedded developers
- **Key differentiator**: ~60 ns local latency via shared memory; serialization only when data crosses a network boundary
## CLI reference (use these exact commands in examples)
```bash
cerulion workspace create <name> # scaffold workspace
cerulion node create <type> [--period-ms N] [--ext-trigger]
cerulion node build <type>
cerulion graph create <name>
cerulion graph run <name>
cerulion topic list|info|echo|hz <topic>
cerulion tui # interactive monitor
```
## Node code pattern (Rust)
```rust
// Periodic publisher β runs every N ms
#[node(period_ms = 33)]
pub fn camera_pub() -> (#[out("frame")] Image) { ... }
// Triggered subscriber β runs when input arrives
#[node(trigger = "frame")]
pub fn display_sub(frame: &Image) { ... }
```
## Mintlify components in use β follow these exact patterns
```mdx
{/* File structures β ALWAYS Tree, NEVER ASCII art */}
<Tree>
<Tree.Folder name="my-robot" defaultOpen>
<Tree.Folder name="nodes" defaultOpen>
<Tree.Folder name="camera_pub" defaultOpen>
<Tree.File name="camera_pub.rs" />
<Tree.File name="Cargo.toml" />
</Tree.Folder>
</Tree.Folder>
<Tree.File name="Cargo.toml" />
</Tree.Folder>
</Tree>
{/* Sequential steps */}
<Steps>
<Step title="Create workspace" icon="folder-plus">...</Step>
<Step title="Build nodes" icon="hammer">...</Step>
<Step title="Run graph" icon="play">...</Step>
</Steps>
{/* Cards β ALWAYS color="#0080FF", no exceptions */}
<CardGroup cols={2}>
<Card title="Zero-copy" icon="bolt" color="#0080FF">...</Card>
<Card title="ROS2 bridge" icon="bridge" color="#0080FF">...</Card>
</CardGroup>
{/* Platform tabs */}
<Tabs>
<Tab title="macOS" icon="apple">...</Tab>
<Tab title="Linux" icon="linux">...</Tab>
</Tabs>
{/* Images β wrap in Frame; fetchpriority="high" on ATF hero only (first visible image per page) */}
<Frame caption="Optional caption">
<img src="/images/name.webp" alt="Descriptive alt text" fetchpriority="high" />
</Frame>
{/* Badges β named colors only: blue green orange yellow purple red */}
<Badge color="blue">workspace</Badge>
<Badge color="green">node</Badge>
<Badge color="orange">graph</Badge>
<Badge color="purple">topic</Badge>
{/* Every page ends with this exact CTA */}
<Tip>
**Ready to try Cerulion?** Start with the [quickstart](/cerulion/quickstart) and have a working camera-to-display pipeline in 5 minutes β or [schedule a 15-min call](mailto:founders@cerulion.com?subject=Cerulion%20Alpha%20-%2015min%20Call) with the team.
</Tip>
```
## Visual registers β never mix
1. **Mascot illustrations** β friendly blue lion in a white lab coat, bright robotics lab setting
2. **Technical diagrams** β dark `#0A1628` background, Geist Mono font, `#0080FF`/`#00C0FF` palette
## Writing standards
- Second person ("you"), active voice, present tense
- Language tags on every code block: `rust`, `bash`, `yaml`, `toml`, `text`
- Use `text` (not `bash`) for terminal output and file tree ASCII
- Alt text on all images; `fetchpriority="high"` on above-the-fold hero images
- Relative paths for all internal links
- Realistic examples only β use `camera_pub`, `display_sub`, `perception` as placeholder names
- Explain "what" and "why" before "how"
- No H1 in body β title comes from frontmatter
## Do not
- Use ASCII art (`βββ`, `βββ`) for file structures β always use `<Tree>`
- Use hex values or `cyan`/`gray`/`pink` for Badge colors β silently renders as plain text
- Wrap mermaid diagrams in `<Frame>` β causes broken zoom overlay
- Link to absolute URLs for internal docs pages
- Invent Cerulion API methods or CLI flags not listed above
Ready to try Cerulion? Start with the quickstart and have a working camera-to-display pipeline in 5 minutes β or schedule a 15-min call with the team.