this repo has no description
CLAUDE.md#
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview#
Sequoia is a CLI tool for publishing Markdown documents with frontmatter to the AT Protocol (Bluesky's decentralized social network). It converts blog posts into ATProto records (site.standard.document, space.remanso.note) and publishes them to a user's PDS.
Website: https://sequoia.pub
Monorepo Structure#
packages/cli/— Main CLI package (the core product)docs/— Documentation website (Vocs-based, deployed to Cloudflare Pages)
Bun workspaces manage the monorepo.
Commands#
# Build CLI
bun run build:cli
# Run CLI in dev (build + link)
cd packages/cli && bun run dev
# Run tests
bun run test:cli
# Run a single test file
cd packages/cli && bun test src/lib/markdown.test.ts
# Lint (auto-fix)
cd packages/cli && bun run lint
# Format (auto-fix)
cd packages/cli && bun run format
# Docs dev server
bun run dev:docs
Architecture#
Entry point: packages/cli/src/index.ts — Uses cmd-ts for type-safe subcommand routing.
Commands (src/commands/):
publish— Core workflow: scans markdown files, publishes to ATProtosync— Fetches published records state from ATProtoupdate— Updates existing recordsauth— Multi-identity management (app-password + OAuth)init— Interactive config setupinject— Injects verification links into static HTML outputlogin— Legacy auth (deprecated)
Libraries (src/lib/):
atproto.ts— ATProto API wrapper (two client types: AtpAgent for app-password, OAuth client)config.ts— Loadssequoia.jsonconfig and.sequoia-state.jsonstate filescredentials.ts— Multi-identity credential storage at~/.config/sequoia/credentials.json(0o600 permissions)markdown.ts— Frontmatter parsing (YAML/TOML), content hashing, atUri injection
Extensions (src/extensions/):
remanso.ts— Createsspace.remanso.noterecords with embedded images
Key Patterns#
- Config resolution:
sequoia.jsonis found by searching up the directory tree - Frontmatter formats: YAML (
---), TOML (+++), and alternative (***) delimiters - Credential types: App-password (PDS URL + identifier + password) and OAuth (DID + handle)
- Build:
bun build src/index.ts --target node --outdir dist
Tooling#
- Runtime/bundler: Bun
- Linter/formatter: Biome (tabs, double quotes)
- Test runner: Bun's native test runner
- CLI framework:
cmd-ts - Interactive UI:
@clack/prompts
Git Conventions#
Never add 'Co-authored-by' lines to git commits unless explicitly asked.