Project

Scribld

AI tools are great for thinking through ideas. They're bad at remembering them.

Type
Developer Tool
Stack
Next.js, Supabase, React Flow
AI Layer
Claude Skill
Status
In Development

Every decision you make in a Claude session lives and dies in that context window. Next session, you're re-explaining the same architecture decisions, the same constraints, the same project history. If you're moving between Claude.ai and Claude Code, it gets worse.

Notion exists. Docs exist. But the gap isn't storage, it's friction. Switching to another app to file something breaks the flow of the work you're actually doing. So nothing gets filed, and the context disappears.

I wanted a persistent, searchable note layer where the AI does the filing and you just keep working.

Scribld is a structured project memory layer for people who work in AI tools regularly. You say “scribble this down” in any Claude Project and Claude formats a structured markdown note, routes it to the right board, and posts it to Scribld's write API using a project-scoped token. The note lands where it belongs automatically.

Retrieval works the same way. “What did I save about X?” runs a full-text search and returns matching notes with title, summary, tags, and board. No re-explaining. No digging through old conversations.

The share extension handles secondary capture, web pages and device content, when you want to pull something in that didn't come from Claude.

System Components
Frontend
Next.js · TypeScript · React Flow
Mind map UI at the project and board level. Radial multi-ring layout with inline rename, hover delete, and right-click note creation. Resizable note drawer with full markdown content and tag display. Full animation suite with staggered cascade on load, animated edges, and reduced-motion support.
Database
Supabase · PostgreSQL · Row-Level Security
Project, board, and note hierarchy with soft deletes and 14-day TTL before hard delete. Full-text search via tsvector with a GIN index and auto-updating trigger. summary and word_count on every note record, designed to keep query response payloads token-efficient from day one.
API Layer
Write · Query · Hierarchy endpoints
POST /api/write/[token] is the primary path for Skill-generated notes. GET /api/query/[token] powers retrieval. GET /api/hierarchy/[token] returns the current project/board tree as plain text. All three are token-authenticated with no session auth required.
Capture
Claude Skill · macOS share extension
The Skill is the primary interface. The share extension handles raw capture from Safari and other apps. source_type distinguishes the two: ai_generated always comes from the Skill, raw always comes from the extension.
Claude as the interface, not a separate app

The original plan had users sharing Claude's output to a macOS share extension as the primary save path. It worked, but it added a step. You had to stop, share, wait. The Skill removes that entirely. You say the phrase, Claude files it, the conversation continues. No app switching, no new habit to build. Making Claude the interface meant the UX disappeared into the workflow instead of sitting on top of it.

Token file over embedded hierarchy

The first approach to syncing Scribld's project structure with Claude was an embedded markdown file attached to the Claude Project. It worked, but it had real problems: the file grows with your note count, it loads into context on every session whether you need it or not, and it needs to be replaced every time the hierarchy changes.

The token file is two lines. Line 1 is the hierarchy URL, line 2 is the query URL. The Skill fetches the current hierarchy on demand only when you trigger it. About 10 tokens of overhead per session instead of a growing context file. And since the token lives in the Claude Project, every note write is automatically scoped to the right user account without any auth flow.

No backend AI calls, ever

Scribld never makes an AI call on its own. The user's Claude subscription does the work. The backend stores, routes, and searches. That keeps the cost structure clean and means the intelligence layer improves automatically as Claude improves, without touching the product.

Designing a product where the AI is the UX means your UX decisions are prompt decisions. The Skill prompt determines whether a save feels invisible or feels like work. Getting that right took more iteration than any of the API code.

Working inside Claude's security layer was the other education. URL patterns that seem equivalent behave differently: a URL hardcoded in a Skill gets blocked; the same URL read from an attached file at runtime goes through. None of that is documented anywhere obvious. The only way to learn it was to test every variation until the mechanic was reliable enough to ship.

Claude SkillNext.jsTypeScriptSupabasePostgreSQLReact FlowFramer MotionmacOS Share Extension