Contributing

A practical path for improving Lore's code, documentation, and experimental surfaces.

Contributions are welcome, especially fixes, clear documentation, useful diagnostics, and focused improvements that preserve Lore’s local-first design.

Before changing code

Read the README, compatibility contract, and support matrix. For tool or hook changes, inspect lib/capabilities/capability-manifest.mjs first; it is the canonical metadata source. Significant changes to memory behavior, retention, or the database should begin with an issue to discuss the approach.

Set up a checkout

git clone <repo-url> ~/dev/lore
cd ~/dev/lore

Lore is plain ESM with no build step. Use the Node.js and pnpm versions pinned in the root and website package.json manifests for development dependencies and website commands. If you want to run the checkout as a live Copilot extension, preview and then run the development installer:

node scripts/dev-install.mjs --dry-run
node scripts/dev-install.mjs

Validate your work

Run the full test suite before opening a pull request:

npm test
npm run test:smoke

For configuration or schema changes, also run:

npm run validate-schema

Keep unit tests focused and fast. Use smoke tests for scripts, temporary homes, and subprocess behavior. Check rendered browser changes in a browser as well as in source.

Run npm run test:reliability for extraction and recall quality, including mandatory recall cases and grouped recall misses. A passing aggregate score does not imply every proposition was recalled. For isolated native adapter checks, use node scripts/verify-cli-hooks.mjs <codex|claude|antigravity> --mock --json; mock mode never launches a host and leaves native recall pending. Actual authenticated certification and a 14-day candidate soak are separate release gates.

Text output limits failure and grouped recall details to 80 entries each and marks omitted or shortened details. Use npm run test:reliability -- --json for the complete evidence.

Style and scope

Use ESM, two-space indentation, double quotes, semicolons, and trailing commas. Prefer Node built-ins and small focused modules. Preserve unrelated work in a dirty checkout, and keep changes scoped to the behavior being fixed.

Documentation changes

Describe user-visible behavior and mark experimental features clearly. When tool metadata or support changes, update lib/capabilities/capability-manifest.mjs and docs/support-matrix.md together. Keep compatibility and release-facing docs in sync with public behavior.

Pull requests

Use a Conventional Commit title such as fix: handle missing session store. Include the tests you ran, relevant screenshots for browser work, and links to related issues. Fill in the repository pull request template. Release-please uses these titles to classify changes.

Privacy while contributing

Never commit ~/.config/lore/lore.db, lore.json, raw session stores, credentials, or generated exports containing private work. Use temporary homes and fixtures for tests. If reporting a problem, share the smallest reproducible details and redact code, paths, and session notes.

Find your way.

Search the guides. Everything is right here.

Local search. No tracking.esc to close