research-notes/blog/CLAUDE.md
jordan ec0b89206f
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
feat: add audio playback and enhanced note UI with sidebar navigation
- Add AudioSection component with media player and waveform visualization
- Add NoteContent component with inline link support and syntax highlighting
- Add NoteSidebar with collapsible sections for navigation
- Add SidebarContext for managing sidebar state
- Update note page layout to use new component architecture
- Add assets utility for GCS audio/video URL generation
- Update content library with audio/skill/prompt type support
- Add vision.md with editorial guidelines
- Update .gitignore with additional security patterns
- Add upload-asset.sh script for GCS asset management

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 11:08:25 -07:00

3.2 KiB

A Research Journal

Personal research projects exploring unfamiliar territory with AI.

Parent context: See ../CLAUDE.md for project-wide routing.

Development

npm install
npm run dev

Open http://localhost:19197

Architecture

This blog uses a data-driven architecture:

  • Content lives in content/ - YAML metadata + Markdown prose
  • Components in src/components/ - Reusable DRY components
  • Dynamic routes - Notes use [slug] for SSG

Content Structure

content/
├── projects/
│   └── maxwell.yaml          # Project metadata
├── notes/
│   ├── 001-picking-a-problem/
│   │   ├── meta.yaml         # Prompts, navigation, metadata
│   │   └── content.md        # Prose content
│   └── 002-building-the-scaffolding/
│       ├── meta.yaml
│       ├── content.md
│       └── files/            # Expandable file contents
│           ├── vision.md
│           ├── architecture.md
│           └── roadmap.md
└── white-paper/
    └── outline.yaml          # Structured sections

Routes

  • / - Journal home (list of projects)
  • /maxwell - Maxwell project landing
  • /maxwell/white-paper - Formal paper outline
  • /maxwell/notes/[slug] - Individual research notes (dynamic)

Adding a Note

  1. Create content/notes/NNN-slug/ directory
  2. Add meta.yaml with prompts, navigation, filesCreated
  3. Add content.md with prose
  4. Add files/ directory if filesCreated references files
  5. Update previous note's meta.yaml navigation.next

Key Files

File Purpose
src/lib/content.ts Content loaders (getProject, getNoteBySlug, etc.)
src/components/layout/PageLayout.tsx Page wrapper
src/components/layout/BackNav.tsx Back navigation
src/components/notes/NoteHeader.tsx Note header (#id, date, title)
src/components/notes/PromptsSection.tsx Prompts with copy buttons
src/components/notes/FilesSection.tsx Expandable files
src/components/notes/NoteFooter.tsx Prev/next navigation
src/components/white-paper/OutlineSection.tsx Outline sections
src/components/copyable.tsx CopyButton, CopyableBlock, ExpandableFile

Reference sidebar items in content.md:

  • [[prompt:id]] — link to a prompt by its id
  • [[file:name.md]] — link to a file by its name
  • [[skill:name]] — link to a skill by its name
  • [[audio:file.m4a]] — link to an audio file by its name

Click scrolls to item + highlights for 1.5s.

Note meta.yaml Schema

id: "001"
slug: 001-picking-a-problem
date: "2026-02-06"
title: Picking a Problem
preview: "Short description for list view"

prompts:
  - id: unique-id
    label: Button label
    content: |
      Prompt content here      

filesCreated:
  - name: filename.md
    description: What this file is

audioFiles:  # optional
  - name: filename.m4a
    title: "Display title"
    description: "What this covers"
    source: NotebookLM  # optional badge

navigation:
  prev: null  # or { slug, id, title }
  next:
    slug: 002-building-the-scaffolding
    id: "002"
    title: Understanding the Project