- Schema phase 1 (tasks 01-02): EntityId, EntityKind, Timestamp, Score, SignalTypeDef, DecayModel, Window, WindowSet — all with property tests and benchmarks scaffolding - Stub modules for storage, signals, query, ranking - Full documentation suite: VISION, USE_CASES, SEQUENCE, API, CODING_GUIDELINES, ai-lookup, research docs, specs, roadmap, planning docs - Marketing site (Next.js) with blog infrastructure - .claude/ agents and skills for the tidalDB development workflow - Foundation standards enforced: thiserror + tracing declared as dependencies, clippy::unwrap_used = deny added to lint config - .gitignore hardened: .next/, node_modules/, .env, secrets, logs Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
5.1 KiB
5.1 KiB
| name | description | agent |
|---|---|---|
| write-blog | Write blog posts tracking tidalDB's progress, architectural decisions, and engineering insights. Use when documenting what was built, writing devlogs, announcing milestones, or crafting technical narratives about the database. | tidal-storyteller |
Write Blog
Write and publish blog posts for tidalDB using the tidal-storyteller agent.
When to Use
- After completing a roadmap phase or milestone
- When an architectural decision deserves a public narrative
- When a benchmark result tells a compelling story
- For "building in public" devlog entries
- When announcing a release, feature, or open-source milestone
Context to Load
Before writing, the agent must read:
- Relevant source files — the code that was written or changed
- Git log —
git log --onelinefor the period covered - Research docs —
docs/research/for technical backing - Previous blog posts — maintain voice consistency across posts
- VISION.md — for tonal calibration (match its conviction)
- thoughts.md — for the deeper "why" behind architectural patterns
Blog Post Types
Architecture Decision Record (ADR)
When: A major architectural choice was made and the reasoning is worth sharing. Structure:
- The problem in one sentence
- What we considered (2-3 options, honestly assessed)
- What we chose and why — the specific evidence
- Code showing the result
- What we'd watch for (risks, trade-offs acknowledged)
Title pattern: Thesis statement, not label.
- "Running decay scores are O(1) — here's the math" not "Signal System Architecture"
- "Why we chose fjall over RocksDB (for now)" not "Storage Engine Decision"
Devlog / Progress Update
When: A phase or milestone was completed. Structure:
- What we set out to build (the goal, in one sentence)
- The hardest part (the interesting engineering, not a changelog)
- What surprised us (the insight the reader takes away)
- Code showing the key breakthrough
- What's next (one sentence, not a roadmap dump)
Title pattern: The insight, not the timeframe.
- "10M signals, 4 microseconds" not "Phase 2 Complete"
- "The struct that touches every ranking query" not "February Update"
Technical Deep Dive
When: A specific technique deserves its own focused explanation. Structure:
- The problem this solves (relatable, concrete)
- Why the obvious approach fails (with numbers)
- The technique, explained incrementally with code
- Benchmarks proving it works
- Where to learn more (papers, references)
Title pattern: The technique as a claim.
- "Forward decay eliminates 99% of read-time computation" not "How We Handle Decay"
- "Diversity enforcement in 3 microseconds" not "Our Ranking System"
Announcement
When: A release, open-source milestone, or public launch. Structure:
- What it is (one sentence)
- What you can do with it (3-5 bullet points with code)
- Install/quickstart command (prominent, copy-pasteable)
- What's different about this (the thesis — why this exists)
- Links: GitHub, docs, community
Writing Standards
Voice
- Active voice. Short sentences. Concrete nouns.
- First person plural ("we") for team decisions, second person ("you") for reader actions
- Technical precision without jargon — say "O(1) per write" not "blazingly fast"
- Humor only when it lands naturally. Never forced.
Structure
- Title is a thesis statement that works as a tweet
- First paragraph earns the second paragraph
- Every paragraph earns the next
- Code blocks show, body text explains
- 800-1500 words for devlogs, 1500-3000 for deep dives
Code Examples
- Must be real — from the actual codebase or a working reproduction
- Must be copy-pasteable
- Include enough context to understand without reading the whole post
- Syntax highlighted with the site's muted dark palette
- Annotated with comments only where the code isn't self-evident
Frontmatter
---
title: "The actual thesis statement"
date: "YYYY-MM-DD"
author: "Name"
description: "One sentence for SEO and social cards"
tags: ["signals", "architecture", "rust"]
---
Workflow
- Gather context — read source files, git log, research docs, previous posts
- Find the headline — the one insight worth sharing. Write it as a thesis.
- Write the draft — narrative first, code second
- Cut in half — remove every sentence that doesn't earn its place
- Add code — working examples that show the key insight
- Read aloud — if you stumble, rewrite
- Write as MDX — save to the blog content directory with proper frontmatter
Quality Checks
- Title works as a standalone tweet
- First paragraph earns the reader's second paragraph
- Every code example is correct and copy-pasteable
- No marketing language ("leverage," "seamless," "robust," "empower")
- Under 3000 words (deep dives) or 1500 words (devlogs)
- Ends with something the reader remembers tomorrow
- Frontmatter is complete (title, date, author, description, tags)
- Would a CTO forward this to their team? If not, rewrite.