mirror of
https://github.com/vector-im/element-call.git
synced 2026-09-25 22:35:49 +00:00
* Say what earns a comment its place - Add a comments section to the code style: no comment by default, the reason only, and the kinds that go stale. - Point to it from the PR checklist in AGENTS.md. Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
57 lines
2.9 KiB
Markdown
57 lines
2.9 KiB
Markdown
# AGENTS.md — Element Call
|
|
|
|
MatrixRTC (MSC4143) + LiveKit video calling, shipped standalone, as a widget in
|
|
Element Web and Element X, as embedded packages, and as a React component in a
|
|
host's page. It is the MatrixRTC reference implementation.
|
|
|
|
## Non-negotiables
|
|
|
|
- Features and UI changes need a pre-approved issue. No issue, no review.
|
|
- Exactly one `PR-*` label per PR. CI enforces it; it drives the changelog.
|
|
- New behaviour ships with unit tests, a story if it renders, and an e2e spec if it
|
|
is user-facing. All three.
|
|
- Reuse an existing component. If you genuinely cannot, say so in the PR body and
|
|
name what you rejected — never add a new one silently.
|
|
- Nothing reads the page. No `window.location`, `document.body`, `window.inner*`,
|
|
`@media`, global `i18next` or the `widget` global — take it from a provider.
|
|
- The change works standalone, as a widget and as a component. Say what you checked.
|
|
- Every gate below is green before you push.
|
|
- Hand off after the first implementation, before the quality pass. Then commit on
|
|
the user's word where the setup allows it, or hand them the message.
|
|
|
|
## Read before you
|
|
|
|
| … | … |
|
|
| -------------------------------- | ---------------------------------------------------------- |
|
|
| start a task of any size | [docs/agents/workflow.md](docs/agents/workflow.md) |
|
|
| touch call logic or a view model | [docs/agents/architecture.md](docs/agents/architecture.md) |
|
|
| write any code | [docs/agents/code-style.md](docs/agents/code-style.md) |
|
|
| write a test, story or e2e spec | [docs/agents/testing.md](docs/agents/testing.md) |
|
|
| open a PR | [CONTRIBUTING.md](CONTRIBUTING.md) |
|
|
| implement from a feature spec | [FEATURES_SPEC/AGENTS.md](FEATURES_SPEC/AGENTS.md) |
|
|
|
|
## Gates
|
|
|
|
```sh
|
|
pnpm lint # tsc, oxlint, knip, component externals
|
|
pnpm format # oxfmt
|
|
pnpm test # vitest: unit and storybook projects
|
|
pnpm i18n:check
|
|
```
|
|
|
|
`knip` fails on dead code; a file deliberately inert ahead of its consumer goes in
|
|
`knip.ts` `ignoreFiles` with a reason.
|
|
|
|
## A good PR
|
|
|
|
- One slice, under ~400 changed lines, green on its own, linked to its issue.
|
|
- View model + marble tests, thin view, a story per state, an e2e spec.
|
|
- Any new shared component called out explicitly, with why nothing existing fit.
|
|
- Template filled for real: what, why, before/after screenshots, repro steps.
|
|
- Comments only where the code can't give the reason — see
|
|
[code-style.md](docs/agents/code-style.md#comments).
|
|
- Anything that redraws continuously — an animation frame, a stream — says what it
|
|
costs, or better, counts the redraws in a test.
|
|
- Branch `<handle>/<topic>`. Plain imperative commit subjects, no prefixes.
|
|
- Once review starts, fix forward. Never force-push a regeneration over a review.
|