From 20f2f02dea9c5c9b952f43cc46d4fa746074a5fb Mon Sep 17 00:00:00 2001 From: Viktor Barzin Date: Sun, 22 Mar 2026 23:44:38 +0200 Subject: [PATCH] add project CLAUDE.md [ci skip] --- .claude/CLAUDE.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 .claude/CLAUDE.md diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md new file mode 100644 index 0000000..31c544e --- /dev/null +++ b/.claude/CLAUDE.md @@ -0,0 +1,33 @@ +# Claude Memory MCP + +## Stack +- **Backend**: Python 3.12, FastAPI, SQLModel +- **Database**: SQLite (local) + PostgreSQL (remote sync) +- **Transport**: MCP over NDJSON (stdio) +- **Package manager**: uv + +## Quick Start +```bash +uv sync +uv run python -m mcp.server # Start MCP server +uv run pytest # Run tests +``` + +## Architecture +- `src/` — MCP server implementation +- `mcp/` — MCP protocol handlers +- `migrations/` — Alembic database migrations +- `hooks/` — Claude Code hook scripts +- `skills/` — Claude Code skills +- `openclaw-plugin/` — OpenClaw integration + +## Key Patterns +- **Non-blocking startup**: MCP server startup must not block on sync/HTTP calls (15s timeout) +- **Suppress stderr**: Any stderr during startup causes Claude Code to reject the server +- **NDJSON transport**: One JSON object per line, NOT Content-Length framing +- **Wrapper script**: Use `~/.local/bin/claude-memory-mcp-wrapper` to source secrets then exec + +## CI/CD +- **Build**: GitHub Actions (Docker image push to DockerHub) +- **Deploy**: Woodpecker CI (kubectl set image), repo ID 78 +- **Image tags**: 8-char git SHA