Community
Where to ask, what each channel is for, and what response you can honestly expect from a small unfunded project.
Where to take what
| You have | Take it to |
|---|---|
| A question about how to do something | A discussion on the repository |
| A page that is wrong, unclear or out of date | An issue, naming the page path |
| A bug in code or in this site | An issue, with a reproduction |
| An idea for a component | Proposing a component |
| A concern that a component or a piece of guidance could cause harm | An issue, marked as a safety concern, in public |
| A security vulnerability | Security. Report it privately, and never open an issue. |
The repository is named on Official resources, which is also where to check before trusting any address claiming to belong to this project.
Four of those six rows end at a repository that is not public yet: the
discussion and the three kinds of issue. The fifth,
Security, carries a note of its own for a related reason.
Private reporting has nowhere to land either. That leaves
Proposing a component, a
page on this site, as the only row you can act on today. Opening the repository
is what turns the rest of this table from an intention into a route. There is
also no report-a-problem control anywhere on this site, which is the shortcut
the first three rows would otherwise offer: <Feedback> is written in
components/docs/meta.tsx and registered as an MDX tag, and no page and no
route renders it, so it needs wiring in as well as a public repository behind
it. Remove this note when both are done, and check that the "Edit this page"
links point at the repository.
What to expect
There is no company behind opsinjs, no support contract and no service-level agreement. Assume a small group of people doing this alongside other work. Questions are usually answered; sometimes they are not, and a follow-up after a week is reasonable rather than rude.
Two things are treated as jumping the queue, and both are stated here so that you know to say them out loud:
Safety concerns. If following this guidance could lead someone to misread their own health data, that is the most important message this project can receive. Say so in the first line. Do not soften it and do not bury it in a feature request.
Accessibility barriers. A barrier in what this system emits, or on this documentation site, is a defect and not an enhancement. This site holds itself to the same standard it publishes; where it currently fails, that is listed on This site's accessibility.
Asking a question that gets answered
This is not etiquette. These are the four things that turn a question nobody can answer into one somebody can:
- What you are trying to show a person. "A blood-pressure reading against their usual range" is answerable. "A card component" is not.
- What you tried, including which page you were reading. If the docs sent you the wrong way, that is a docs bug and worth more than the answer.
- The versions. Which registry URL you installed from, and when. Nothing in the file records where it came from, so the date you copied the source is often the only handle either of us has on which version you have. Paste the file if you are not sure.
- What "correct" would look like. Especially for anything clinical: the answer often depends on what the number means for the person reading it, and we cannot guess that.
Contributing
The Handbook → Contributing section covers the mechanics: the component checklist, the documentation templates, code style, and how to add a token without breaking the two-axis rule. Two constraints are worth knowing before you start, because they surprise people:
Documentation is not optional and not separate. A component without its
specification page does not build. <PageTemplate> fails when a section
required at the declared status is missing. Writing the page first is not
bureaucracy here; it is how the design gets reviewed while it is still cheap to
change.
Numbers are generated, never typed. Contrast figures, prop tables, token tables and catalogue rows come from scripts. A pull request that hand-edits a generated table fails CI on a diff, which is ADR 0006 doing its job.
Code of conduct
No code of conduct has been adopted yet. Adopt one. The Contributor Covenant is the sensible default. Commit it to the repository, and link it from here. Until then the operating rule is the obvious one: be decent, assume good faith, and expect a health project to take safety and accessibility complaints seriously even when they are delivered impatiently.
Last read through against the system on 2026-09-02. Due for review every 6 months; expiry is reported by pnpm run check:freshness.