tidaldb/.agents/skills/build-site/skill.md
jordan.washburn fe711870be feat: M8 phases 7-10 — gRPC transport, cluster server, scatter-gather, multi-node UAT
Delivers the distributed fabric's network layer and HTTP cluster surface:

**m8p7: tidal-net crate (gRPC transport)**
- GrpcTransport implementing Transport trait via tonic 0.12
- Per-peer circuit breaker (Closed/Open/HalfOpen), mutual TLS via rustls
- Boxed error types (clippy-clean), graceful mutex recovery, debug_assert
  against calling block_on from tokio context
- Proto: WalShipping service (ShipSegment, StreamSegments stub, Heartbeat)
- 19 tests: contract, mTLS, reconnection, multi-node UAT, benchmarks

**m8p8: cluster subcommand + HTTP routes**
- ClusterState wrapping SimulatedCluster with region name mapping
- Routes: /health, /cluster/status, /cluster/promote, /partition, /heal
- Data routes: /items, /embeddings, /signals, /feed, /search (region-aware)
- Ranking profiles wired through ClusterConfig to all cluster nodes
- Topology YAML config, docker/cluster/Dockerfile (ENTRYPOINT+CMD, non-root)

**m8p9: scatter-gather query routing**
- Entity-sharded writes via Knuth multiplicative hash
- Scatter-gather RETRIEVE and SEARCH with deadline propagation (50ms-5ms)
- Partial failure: degraded=true with unavailable_shards metadata
- 6 tests: distribution, determinism, multi-shard retrieve, degraded
  partial results, deadline propagation, scatter-gather search

**m8p10: gRPC transport integration tests**
- 8 tests over real gRPC: replication convergence, idempotent replay,
  mixed signals, 3-node fan-out, partition/heal, degraded follower, perf
- Documented as tier-2 (in-process+gRPC); tier-3 multi-process pending
2026-04-11 13:51:08 -06:00

77 lines
2.9 KiB
Markdown

---
name: build-site
description: Build and iterate on tidalDB's public marketing site and blog. Use when creating pages, components, layouts, or any public-facing web work for the database.
agent: tidal-storyteller
---
# Build Site
Build or modify tidalDB's public site using the **tidal-storyteller** agent.
## When to Use
- Creating a new page (home, blog index, vision, about)
- Building or modifying site components (nav, hero, footer, blog cards)
- Setting up the Next.js project structure and MDX blog system
- Designing the information architecture for the public site
- Iterating on copy, layout, or visual design of any public page
## Context to Load
Before building, the agent must read:
1. `VISION.md` — the product story and conviction
2. `API.md` — how developers interact with the product (for accurate code examples)
3. `USE_CASES.md` — what surfaces the database powers (for "what you can build" sections)
4. `CODING_GUIDELINES.md` — the engineering standards (for credibility in blog code)
## Workflow
### New Page
1. **Identify the page's job** — what does the visitor leave knowing?
2. **Write the hero first** — headline, subhead, primary CTA
3. **Structure the scroll** — narrative arc from hook to action
4. **Build in Next.js** — App Router, static export, Tailwind dark theme
5. **Test at three widths** — 1440px, 768px, 375px
6. **Lighthouse audit** — must score 95+ on performance
### New Component
1. **Check existing components** — don't rebuild what exists
2. **Design the states** — default, hover, active, loading, empty
3. **Build with Tailwind** — use the design system from the agent's spec
4. **Verify dark theme** — the site has no light mode
5. **Responsive check** — component works at all breakpoints
### Site Setup (First Time)
1. Initialize Next.js with App Router and static export
2. Configure Tailwind with the dark color palette from the agent
3. Set up MDX for blog posts with syntax highlighting
4. Create the base layout: nav, main content area, footer
5. Install minimal dependencies: next, tailwind, mdx, a syntax highlighter
6. Deploy to Vercel or Cloudflare Pages
## Design Rules (Quick Reference)
| Element | Spec |
|---------|------|
| Background | `#000000` |
| Headlines | White serif (Playfair Display / Lora), 64-80px hero |
| Body | `#888888`, Inter / system sans, 16-18px |
| Accent | `#C97A4E` (warm copper) — pills, labels, hovers only |
| Section labels | Uppercase monospace, 12px, copper, letter-spaced |
| Code blocks | `#0D0D0D` background, JetBrains Mono, copy button |
| Section spacing | 120-160px between major sections |
| Content width | max-w-3xl prose, max-w-5xl hero |
## Quality Checks
- [ ] Lighthouse performance >= 95
- [ ] No layout shift (CLS = 0)
- [ ] Total page weight < 100KB transferred
- [ ] All code examples are copy-pasteable and correct
- [ ] Works at 1440px, 768px, and 375px
- [ ] No competing CTAs on the same screen
- [ ] Dark theme only no light mode toggle