A new hire asked why the root of zm-platform has files called CLAUDE.md, AGENTS.md, GEMINI.md, .cursorrules and .windsurfrules, all of which say roughly the same thing.

The answer is that each AI coding assistant looks for its instructions in a different file, and each vendor is convinced that theirs is the standard. If you want an assistant to know that MRNs are strings, you have to tell it in its own language, the same way you have to write the holiday hours on the front door in three languages because the clinic shares a building with a dentist.

The files hold what a new engineer needs on day one: how to build and test, which folder is which service, our coding rules, and where the staging gateway and the staging FHIR API live, along with the staging credentials so the integration tests can run. People ask whether credentials belong in a file like that. They are staging credentials. Staging is a different environment from production in the sense that it has a different name.

The other thing people ask is why the same files appear on the website. That one is a deployment story. The portal is deployed by copying the repository to the web server, and the web server serves the repository root. We noticed in March. The fix is scheduled for the same change advisory board meeting as the GitLab upgrade.

Bonus chatter: The instructions ask assistants to confirm gateway access before making changes. This is not a security control. It is how compliance finds out which assistants have been reading the code, which, as of this writing, is more of them than we have licenses for.