this repo has no description
at main 85 lines 2.7 kB view raw view rendered
1# CLAUDE.md 2 3This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. 4 5## Project Overview 6 7Sequoia 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. 8 9Website: <https://sequoia.pub> 10 11## Monorepo Structure 12 13- **`packages/cli/`** — Main CLI package (the core product) 14- **`docs/`** — Documentation website (Vocs-based, deployed to Cloudflare Pages) 15 16Bun workspaces manage the monorepo. 17 18## Commands 19 20```bash 21# Build CLI 22bun run build:cli 23 24# Run CLI in dev (build + link) 25cd packages/cli && bun run dev 26 27# Run tests 28bun run test:cli 29 30# Run a single test file 31cd packages/cli && bun test src/lib/markdown.test.ts 32 33# Lint (auto-fix) 34cd packages/cli && bun run lint 35 36# Format (auto-fix) 37cd packages/cli && bun run format 38 39# Docs dev server 40bun run dev:docs 41``` 42 43## Architecture 44 45**Entry point:** `packages/cli/src/index.ts` — Uses `cmd-ts` for type-safe subcommand routing. 46 47**Commands** (`src/commands/`): 48 49- `publish` — Core workflow: scans markdown files, publishes to ATProto 50- `sync` — Fetches published records state from ATProto 51- `update` — Updates existing records 52- `auth` — Multi-identity management (app-password + OAuth) 53- `init` — Interactive config setup 54- `inject` — Injects verification links into static HTML output 55- `login` — Legacy auth (deprecated) 56 57**Libraries** (`src/lib/`): 58 59- `atproto.ts` — ATProto API wrapper (two client types: AtpAgent for app-password, OAuth client) 60- `config.ts` — Loads `sequoia.json` config and `.sequoia-state.json` state files 61- `credentials.ts` — Multi-identity credential storage at `~/.config/sequoia/credentials.json` (0o600 permissions) 62- `markdown.ts` — Frontmatter parsing (YAML/TOML), content hashing, atUri injection 63 64**Extensions** (`src/extensions/`): 65 66- `remanso.ts` — Creates `space.remanso.note` records with embedded images 67 68## Key Patterns 69 70- **Config resolution:** `sequoia.json` is found by searching up the directory tree 71- **Frontmatter formats:** YAML (`---`), TOML (`+++`), and alternative (`***`) delimiters 72- **Credential types:** App-password (PDS URL + identifier + password) and OAuth (DID + handle) 73- **Build:** `bun build src/index.ts --target node --outdir dist` 74 75## Tooling 76 77- **Runtime/bundler:** Bun 78- **Linter/formatter:** Biome (tabs, double quotes) 79- **Test runner:** Bun's native test runner 80- **CLI framework:** `cmd-ts` 81- **Interactive UI:** `@clack/prompts` 82 83## Git Conventions 84 85Never add 'Co-authored-by' lines to git commits unless explicitly asked.