Explicit context management for multi-agent systems.
# Requirements: bash 4.0+, jq, yq, sqlite3
brew install jq yq # macOS
# Verify
lore --help| Convention | Rule |
|---|---|
| Shell safety | set -euo pipefail in every script |
| Variable expansions | Always quote ("$var", not $var) |
| Cleanup | Use trap for temporary files and state |
| Data format | JSONL for append-only logs, YAML for registries |
| Configuration | TOML for config, YAML for registries |
| Prose | Strunk's Elements of Style -- active, concrete |
| Emdashes | Never. Use double hyphens (--) instead |
Use conventional prefixes with Strunk's-style body:
feat: Default bare capture to observation, unify CLI around single verb
fix: Fix duplicate session ID on rapid handoff
docs: Document graph traversal depth parameter
Active voice. Omit needless words. No Co-Authored-By signatures.
- Append-only: Decisions and patterns are never deleted, only marked revised or abandoned
- Tags: Always include the source project name
- Schemas: Follow existing schemas in
journal/data/schema.json - Paths: Component data lives in
<component>/data/
make check # format + lint + prose + links
make sync-all # sync external sources- Branch from
mainwith a descriptive name - Keep changes focused -- one concern per PR
- Read CLAUDE.md and
LORE_CONTRACT.mdbefore modifying interfaces - Run
make checkbefore submitting - Integration via
lib/lore-client-base.shmust remain fail-silent
- Don't duplicate data across components -- cross-link instead
- Don't break the append-only contract on JSONL files
- Don't add runtime dependencies beyond bash, jq, yq, sqlite3