Imported from maxmillienjr/realtime-voice-infra (
AGENTS.md). Install upstream withnpx skills add maxmillienjr/realtime-voice-infra. Copyright stays with the author.
Agent capability manifest
Specialised sub-agents available in this repo. Invoke by filename.
| Agent | Trigger | Scope |
|---|---|---|
.agents/audio-reviewer.md |
PR touches packages/audio-codec, packages/session-core, ring buffer, backpressure, or IV/key derivation |
Audio, crypto, buffer-size regressions |
.agents/test-author.md |
New adapter, new Socket.io event, new wire schema | Generates vitest unit + integration tests with synthetic fixtures |
Routing rules
- Any change to IV construction, HKDF, or sequence handling must be routed
through
audio-reviewerand include a crypto round-trip unit test. - Any change to
BACKPRESSURE_THRESHOLDdefaults must include a k6 run artifact from theloadworkflow. - New adapters must ship with unit tests generated by
test-author.
Context files
Read before starting work:
README.mdand.context/architecture.md,.context/backpressure.md,.context/crypto.md— what the system is meant to do.docs/STATUS.md— what each documented capability is actually backed by at HEAD, withfile:lineevidence. Read this before trusting a sentence from the files above..context/conventions.md— code style, commit rules, testing tiers, documentation rules.docs/prd/README.md— the backlog index; what is planned and what it depends on.docs/adr/— decisions that must not be silently contradicted.
Planned work
docs/prd/README.md— the backlog index. Every planned change is described here before it is built. Read it before proposing new work; the thing you are about to suggest may already be a PRD with a decided approach.docs/adr/— architecture decision records. Do not contradict an accepted record without superseding it..agents/prd-author.md— use it when writing or revising a PRD.
Claude Code has a /prd <id> command (.claude/commands/prd.md) that runs the whole flow —
implement if the PRD is accepted, review if it is a draft, draft it for review if the id is in
the index but the file is not. Other tools should follow the same three steps: verify every
repo claim at HEAD, keep the index row and the frontmatter in agreement, and run
yarn lint:docs before finishing.
Gates
yarn lint, yarn lint:docs, yarn build, yarn typecheck, yarn test, in that order — it is
ci.yml's, and build comes before typecheck and test because workspaces resolve each
other through dist/. All five run in ci.yml. There is no formatting gate yet (P0-B); run
npx prettier --check on every file you touch.