Contributing
Before You Start#
- Read
AGENTS.md. - Read
docs/memory/manifest.md, thendocs/memory/brief.md. - Load additional memory files only when the manifest says they are relevant.
- Do not load
docs/memory/archive/unless explicitly requested or performing memory maintenance. - After meaningful decisions or repeated corrections, update the appropriate memory file or propose an update.
Repository Layout#
MemoryCustodian/
.codex-plugin/plugin.json # Codex plugin manifest
.claude-plugin/plugin.json # Claude plugin metadata
.claude-plugin/marketplace.json # Claude local development marketplace metadata
.agents/plugins/marketplace.json # Repo-local plugin marketplace for testing
GEMINI.md # Thin Gemini context entry for this repository
hooks/ # Lightweight session-start bootstrap for plugin hosts
skills/memory-custodian/ # Reusable agent skill
adapters/ # Codex, Claude Code, Gemini, and generic entry snippets
cli/memory_custodian/ # Python CLI implementation
bin/memory-custodian # Claude plugin PATH wrapper
scripts/memory-custodian # Plugin-safe CLI wrapper
scripts/package-codex-plugin.py # Deterministic Codex plugin archive builder
evals/memory-custodian/ # Static skill contract scenarios
templates/minimal/ # Core protocol templates
templates/extended/ # Optional memory module scaffolding
docs/memory/ # Dogfood memory for this repository
tests/ # Focused stdlib unittest suiteDevelopment Checks#
Run the unit tests:
PYTHONPATH=cli python3 -m unittest discover -s testsRun the static skill contract checks. They validate required instructions, scenario structure, required observations, forbidden outcomes, and contractual wording; they do not execute an Agent or model runtime:
PYTHONPATH=cli python3 scripts/check-skill-evals.pyCheck the current memory set:
PYTHONPATH=cli python3 -m memory_custodian.main checkCheck whitespace before committing:
git diff --checkPackaging#
Build a deterministic Codex plugin archive:
python3 scripts/package-codex-plugin.py --allow-dirty --output /tmp/memory-custodian.zipUse --allow-dirty only for local verification. Release packaging should happen from an intentional tree state.
Development Notes#
- The CLI uses Python stdlib only.
- Keep skill instructions concise; put detailed policy in
skills/memory-custodian/references/. - Keep platform files thin.
AGENTS.md,CLAUDE.md, andGEMINI.mdshould point agents at MemoryCustodian rather than importing all memory content. - Custom memory directories, if explicitly configured, must still live under
docs/.