Welcome! Quick rules:
- No personal data in PRs or issues. Reduce reproducers to synthetic fixtures (the existing tests do this).
- New rules add a row to
docs/DESIGN.md#severity-choiceswith justification before code review. pytestandruff check src/should pass on Python 3.10–3.13.- Privacy invariant: no rule may emit file body content; only rule ids, paths, line numbers, severities, and concise messages.
git clone https://github.com/hinanohart/claude-memory-lint.git
cd claude-memory-lint
pip install -e .[dev]
pytest -v
ruff check src/- Create
src/cml/rules/r0NN_short_name.pywith acheck(parsed, config) -> list[Violation]function. - Register it in
src/cml/rules/__init__.pyunder eitherPER_FILE_RULESorCORPUS_RULES. - Add at least one positive and one negative test case in
tests/test_rules.py. - Document the rule in
README.mdanddocs/DESIGN.md.
Tag with vMAJOR.MINOR.PATCH. Any rule reclassification (e.g. INFO →
WARN) is a minor bump. New ERROR rules are a major bump because they
break existing CI configurations.