Krowli

Pagelore — AI skill for Claude Code

AI community

Durable project memory for AI coding agents (Claude Code, Codex, Cursor, Gemini CLI): decisions and bug post-mortems as markdown pages in your repo, BM25F search via CLI or MCP server, validated write.

How to install Pagelore

This entry records only its repository, not the path inside it, so there is no exact command to give. Open Krowli/project-memory and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What Pagelore does

Durable project memory for AI coding agents (Claude Code, Codex, Cursor, Gemini CLI): decisions and bug post-mortems as markdown pages in your repo, BM25F search via CLI or MCP server, validated writes. No server, no database, stdlib-only Python.

Alternatives in AI

  • Qiaomu Markdown Proxy — Fetch any URL as clean Markdown via proxy services (r.jina.ai / defuddle.md) or built-in scripts 426 ★
  • Oleafly — A powerful live collaborative LaTeX, Typst & Markdown editor with shared cursors, comments, cloud sync, and AI 243 ★
  • Awareness Local — Local-first AI agent memory — one command, works offline, no account needed 199 ★

README

pagelore

[![CI](https://github.com/Krowli/pagelore/actions/workflows/test.yml/badge.svg)](https://github.com/Krowli/pagelore/actions/workflows/test.yml) [![PyPI version](https://img.shields.io/pypi/v/pagelore.svg)](https://pypi.org/project/pagelore/) [![npm version](https://img.shields.io/npm/v/pagelore.svg)](https://www.npmjs.com/package/pagelore) [![Python versions](https://img.shields.io/pypi/pyversions/pagelore.svg)](https://pypi.org/project/pagelore/) [![License: PolyForm Noncommercial](https://img.shields.io/badge/license-PolyForm%20Noncommercial-orange.svg)](https://github.com/Krowli/pagelore/blob/main/LICENSE)

**Durable project memory for AI coding agents — Claude Code, Codex, Cursor, Gemini CLI.** Decisions, contracts and bug post-mortems live as **markdown pages in your repository**, searched with BM25F from a command line or an MCP server, and every write is validated before it lands. No server, no database to run, no API key, no hooks; the runtime is the Python 3.9+ standard library.

**Works with:** Claude Code · Codex CLI · Cursor · Gemini CLI · anything that can run a shell command or an MCP stdio server.

Why

Agents re-derive the same context every session and confidently restate decisions that were reversed months ago. A memory store fixes that only if it is cheap to write, cheap to read, and survives switching tools. Plain markdown in git satisfies all three: the store is a `.memory/` directory of `.md` files — greppable, diffable, reviewable in a pull request, readable by any agent or person.

  • Search that ranks. BM25F over title and body; a SQLite FTS5 index kept as a disposable cache outside the store, and an in-process ranker when the index cannot be used. Measured against grep, embeddings and the closest competitor.
  • Writes are refused, not requested. A page with no sources, a source that does not exist, or too little body is rejected with a FIX: l