MeMesh is intentionally small. Changes should preserve that shape: a minimal MCP surface, SQLite-backed persistence, and predictable packaging.
- Node.js 20 or newer
- npm
npm install
npm run typecheck
npm run build
npm test -- --run
npm run test:packagednpm run test:packaged is required for changes that affect packaging, hooks, CLI assets, release automation, or any file included in the published npm tarball.
Documentation is part of the change, not follow-up work. The CI's Version coherence step and Doctor (manifest + hooks integrity gate) step enforce the most-fragile parts of this discipline; everything else is reviewer-judgment.
- Update
README.mdwhen behavior, installation, or development workflow changes (and re-sync the 10 locale parities —README.de.md,README.vi.md,README.th.md,README.pt.md,README.ja.md,README.ko.md,README.zh-CN.md,README.zh-TW.md,README.es.md,README.fr.md). - Update
docs/api/API_REFERENCE.mdwhen the MCP / HTTP / CLI surface changes (and bump its**Version**:line on a release). - Update
docs/ARCHITECTURE.mdwhen module structure, storage behavior, or packaging flow changes (and bump its**Version**:line on a release). - Keep version metadata coherent:
package.json+.claude-plugin/plugin.json+.claude-plugin/marketplace.jsonplugins[].version+CHANGELOG.md## [X.Y.Z]header + the two**Version**:lines above must all match. Thenode scripts/check-version-coherence.mjscheck (run as a CI step) catches partial bumps. - After ANY change to
.claude-plugin/,scripts/hooks/,skills/, or version files, runnpm run buildsodist/skills-manifest.jsonregenerates. Otherwisememesh doctorreportsSkills + hooks integrity FAILand users see "memesh setup is incomplete" in their dashboard. CI'sDoctorstep catches this before merge.
The repository-level engineering rules in CLAUDE.md apply to contributor changes as well.
- Use the project's
.github/pull_request_template.md— it loads automatically when you open a PR. Fill in the "Docs synced" checklist; an unfilled checklist is treated as not-ready-for-review. - Keep pull requests focused. Smaller changes are easier to review and safer to release.
- Include tests for behavior changes when practical.
- Note any packaging or migration impact in the PR description.
- If your change affects the published artifact, mention that
npm run test:packagedpassed. - If your change touches
scripts/hooks/*.jsor any hook payload consumer, follow the hook-change protocol: real-payload fixture (capture from a live Claude Code transcript), default-allow on optional fields, stderr-trace every silent exit, end-to-end install test in a real Claude Code session,memesh doctorhook-activity green post-install.
Do not open public issues for vulnerabilities. Use the private reporting process in SECURITY.md.