Skip to content

Add CLAUDE.md: guardrails for AI-assisted contributions + a channel/template starter #342

Description

@MichaelLeeHobbs

Summary

Propose adding two documentation files to help the growing number of contributors who use AI coding assistants (Claude Code, Cursor, etc.):

  1. CLAUDE.md at the repo root — strict, project-owned guardrails for AI-assisted changes to the engine: issue-first, one-concern/minimal-diff PRs bounded in breadth and depth, preserve API/serialization/DB/protocol compatibility (incl. the subtle breaks: charset, timezone/locale, HL7 delimiters), no PHI logging, no unsafe deserialization/XXE (this codebase's documented RCE class), match existing style, tests that actually fail-before/pass-after, MPL headers copied from server/license-header.txt. It also instructs the assistant to push back and propose the better approach rather than dutifully implement a weak fix. Grounded in the repo's real build (Java 17 + Ant server/mirth-build.xml), module map, and CONTRIBUTING flow — deliberately with no automation/orchestration skill, so no large multi-file single-PR agent changes.
  2. CLAUDE_USER_EXAMPLE.md — a copy-me starter for a user's own channel/template repo (JavaScript on the Rhino runtime): the ES5/Rhino constraints, the loop-scoping bug, Java interop, engine globals, and code patterns. Points at oie-examples and the docs site.

Why

AI assistants are increasingly pointed at projects like this. A project-owned CLAUDE.md is the lever to keep AI-assisted contributions small, reviewable, compatibility-preserving, and honest — protecting the codebase from low-quality, sprawling AI PRs while still welcoming the help.

Disclosure

These files were drafted with AI assistance (Claude Code). The content is grounded in my years of hands-on Mirth/Connect experience and research, and I have personally reviewed both files in full and stand behind them. Happy to adjust scope or wording to maintainer preference — opening a PR to make the proposal concrete.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions